我一直在进行屏幕录像here,以学习如何编写基于表的iPhone应用程序,到目前为止,它一直进行得很顺利。目前我正在第三集的中途,并且开始遇到障碍。

为了删除表顶层的临时硬编码,本教程为所有条目及其数据创建一个NSMutableDicitonary,然后使用NSArray语句创建一个forKeys来获得一个数组,该数组只包含显示在表格单元格中的headwords。

我遇到的问题是数组的变量拒绝合成。

AppDelegate.h文件中使用其他属性定义了有问题的变量,如下所示:

@property (readonly) NSArray *recipes;


然后将其合成并在AppDelegate.m文件中实现,如下所示:

@synthesize recipes;

- (NSArray *)recipes {
    return [data allKeys];
}


我询问了截屏视频的作者,他对AppDelegate.h提出了以下建议:

@class Foo :NSObject {
    NSArray *_recipes;
}

@property(nonatomic, retain)NSArray *recipes;

@end


这对于AppDelegate.m

@implementation Foo

@synthesize recipes = _recipes;

@end


我尝试了这种方法,但是它产生了比以前更多的错误。是什么使该变量定义与任何其他@property不同,如何使它起作用?

最佳答案

@synthesize生成访问属性的简单方法。由于访问器方法更复杂,因此无法使用@synthesize生成。

- (NSArray *)recipes {
    return [data allKeys];
}

关于objective-c - 属性拒绝合成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1829492/

10-10 08:46