在声明property属性后,有2种实现选择
@synthesize
编译器期间,让编译器自动生成getter/setter方法。
当有自定义的存或取方法时,自定义会屏蔽自动生成该方法
@dynamic
告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告
然后由自己实现存取方法
或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性
总结:
1:程序中定义 "变量类型*变量名;" , 使用@synthesize 变量名;然后他会默认生成的代码名称符合如下格式:
//get方法:
-(变量类型*) 变量名()
{
return 变量名;
}
//set方法:
-(void) set变量名(变量类型*newValue) //注意这里的变量名首字母是大写的
{
//具体的实现方式根据@property的属性不同而不同, copy, retain, strong, assign,nonatomic, atomic等。
}
2:当程序中使用 self.变量名与直接 变量名 是不一样的。
self.变量名: 访问的是属性方法,具体是get还是set就需要看是写在左边还是右边了。
变量名:访问的就是属性本身。
3:具体 set的方法实现与@property 具体声明有关。
4:@synthesize 相对于@dynamic 而前,自动添加申明属性变量,同时还为其添加了get 与 set 方法;