@dynamic与@synthesize的差别

Posted jzssuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@dynamic与@synthesize的差别相关的知识,希望对你有一定的参考价值。

如今非常多时候我们都已经不再使用@synthesizekeyword了,可是须要了解当中的原理:

一、@dynamic与@synthesize的差别
@property有两个相应的词。一个是@synthesize,一个是@dynamic。假设@synthesize和@dynamic都没写。那么默认的就是@syntheszie var = _var;

@synthesize的语义是假设你没有手动实现setter方法和getter方法,那么编译器会自己主动为你加上这两个方法。

@dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自己主动生成。(当然对于readonly的属性仅仅需提供getter就可以)。

假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,可是当程序执行到instance.var =someVar,因为缺setter方法会导致程序崩溃;或者当执行到 someVar = var时,因为缺getter方法相同会导致崩溃。编译时没问题,执行时才执行对应的方法,这就是所谓的动态绑定。

如今我们不再使用@synthesize,所以假设我们没实用这个[email protected]修饰属性的时候,我们默认是实现了getter和setter方法。

所以我们在数据库中用到core Data的时候。我们须要属性和表中的记录的gukeyword段进行相应,这个时候,我们将会须要开发人员管理绑定,还须要开发人员实现相应的属性的setter和getter方法。

以上是关于@dynamic与@synthesize的差别的主要内容,如果未能解决你的问题,请参考以下文章

iOS中的@dynamic与@synthesize

@dynamic

@dynamic 和 @synthesize 有啥区别?

Objective-C中的@dynamic(转)

@synthesize和@dynamic分别有什么作用?

@synthesize @dynamic 的区别