0

我正在开发一个 iOS 应用程序,它的第一个版本上周进入了应用程序商店,我对添加到它的东西有一些想法,我想根据用户反馈改变一些东西。我决定为每个主要的新部分做功能分支。我完成了第一个功能分支并验证了应用程序正常工作,没有任何警告或错误。

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

这是抛出“选择器没有已知的类方法”的文件之一的示例。它是为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
4

1 回答 1

0

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

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

事实证明,.PCH 文件不能替代在每个使用它的类中导入文件。它们仍然必须被导入到每个类中。这个页面“ 4 Ways Precompiled Headers Cripple Your Code ”向我解释了这个问题,特别是标题为“Find and fix the missing #imports”的部分。

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

于 2013-03-10T05:39:15.010 回答