Git 分支合并到主导致 Xcode 项目中"No Known Class Method for Selector"错误



我正在开发一款iOS应用,上周首次在app store发布,我已经有了一些添加内容的想法,也有一些想要根据用户反馈进行修改的内容。我决定为每个主要的新部分做特征分支。我完成了第一个功能分支,并验证了应用程序正常工作,没有任何警告或错误。

我合并了分支到master没有任何冲突,在Xcode中打开成功合并的master并试图运行它后,我收到了很多"没有已知的选择器类方法","类的重复接口定义"one_answers"属性有先前的声明"错误。我已经查看了它提到的所有文件,它们都与功能分支中的文件完全相同。导致文件的最大问题是苹果的可达性。

下面是其中一个抛出"No known class method for selector"的文件的例子。它是针对create, updateremove方法的。所有这些方法都被添加到特性分支中。

.h文件:

//
//  Services.h
//  MovieQueue
//
//  Created by Joshua Kendall on 2/22/13.
//  Copyright (c) 2013 Simple App Group LLC. All rights reserved.
//
@interface Services : NSObject
+ (NSArray *)search:(NSString *)movieTitle;
+ (NSDictionary *)getMovieDetails:(NSInteger)movieId;
+ (void)create:(NSDictionary *)record;
+ (void)update:(NSDictionary *)record;
+ (void)remove:(id)movieId;
@end

和编辑过的。m文件:

//
//  Services.m
//  MovieQueue
//
//  Created by Joshua Kendall on 2/22/13.
//  Copyright (c) 2013 Simple App Group LLC. All rights reserved.
//
#import "Services.h"
@implementation Services
#pragma mark - API Access
+ (NSArray *)search:(NSString *)movieTitle {
...
}
+ (NSDictionary *)getMovieDetails:(NSInteger)movieId {
...
}
#pragma mark - CRUD
+ (void)create:(NSDictionary *)record {
...
}
+ (void)update:(NSDictionary *)record {
...
}
+ (void)remove:(id)movieId {
...
}
@end

好的,事实证明这是导入的问题,我在应用程序的. pch文件中导入了所有常用文件,如Services类。我在所有的应用中都这么做过,因为这比在每个视图控制器中导入相同的文件更有意义。

我接受了CodaFi的建议并检查了导入,在将服务头导入到一个有问题构建的类中之后,没有问题,我开始查看. pch文件,因为它似乎是原因。

事实证明,. pch文件不能替代在每个使用它的类中导入文件。它们仍然必须被导入到每个类中。这一页"预编译头文件削弱代码的4种方式"向我解释了这个问题,特别是题为"查找和修复丢失的#imports"的部分。

我猜我以前从来没有遇到过这个问题,因为我以前从来没有在iOS项目中使用过分支。

相关内容

最新更新