我正在学习iPhone开发。在书中的示例中,提到了属性的@synthesize关键字。
对于控件,我在.h文件中定义属性,但在.m文件中不定义@synthesize。我正在使用.text属性访问文本框的属性。 此外,我还链接了文本框的出口,文本框的名称与属性名称不同。
代码运行良好;所以@synthesize关键字不需要吗?什么时候?
答案 0 :(得分:4)
来自Apple的文档> Mac开发中心> Cocoa Core Competencies>声明的财产:
除了声明访问者 方法,您可以指示编译器 合成它们的实现 (或通知编译器你的 上课将合成它们 运行时)。
您在a中使用@synthesize语句 类的实现块告诉 编译器来创建实现 符合您给出的规格 在财产声明中。
供参考:
您可以使用@dynamic语句来说明 编译器如果禁止警告 它无法找到实现 由a指定的访问器方法 @property声明。
答案 1 :(得分:3)
@synthesize指令控制访问器方法的创建。但是,你并没有严格地说必须使用访问器方法,它们只是非常好的想法,让编译器自动生成它们是值得的。
访问器方法可以对变量进行微调,并使键值编码更容易。
在Objective-c 2.0之前,您必须手动编写访问器。这意味着为每个变量编写两个方法。这很乏味,很多人用脚本来做。当他们更新语言时,他们只包括那些脚本。 @ property,@synthesize和@dynamic编译器指令激活这些脚本。