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

@synthesize和@dynamic

2016-07-15 22:26 411 查看
在object-c 中,可以将接口类中的变量使用@property来声明属性。但是在.h中声明的属性,必须在.m中使用@synthesize或者@dynamic来实现(从iOS6起,这步可以省略,默认情况下,使用的是@synthesize),否则属性不可用。

@synthesize

@synthesize实际的意义就是 自动生成属性的setter和getter方法。

@dynamic

@dynamic 就是要告诉编译器,代码中用@dynamic修饰的属性,其getter和setter方法会在程序运行的时候或者用其他方式动态绑定,以便让编译器通过编译。其主要的作用就是用在NSManagerObject对象的属性声明上,由于此类对象的属性一般是从Core Data的属性中生成的,core data 框架会在程序运行的时候为此类属性生成getter和setter方法。

假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,但是当程序运行到instance.var = someVar,由于缺setter方法会导致程序崩溃;或者当运行到 someVar = var时,由于缺getter方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios