您的位置:首页 > 移动开发 > IOS开发

iOS property两种实现方法区别的简单介绍

2016-03-10 17:32 651 查看
在声明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 方法; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息