tips: @property 、@synthesize和@dynamic

property是什么

property只是accessors的shortcut

synthesize和dynamic

@synthesize会在编译时创建accessors(需要时会创建ivar)。
@synthesize只会创建不存在的方法。比如,如果已有自定义的setter, 那么不再创建setter。
@dynamic essentially tells the compile"don't worry, a method is on the way". 使用了@dynamic指令,编译器将不再在编译时创建accessors方法(以及ivar)。
@dynamic适用于在runtime动态创建accessors方法的场景。
NSManagedObject的子类使用@dynamic指令比较多。是因为core data有自己的数据存储。

Refs

http://stackoverflow.com/questions/1160498/synthesize-vs-dynamic-what-are-the-differences?lq=1

原文地址:https://www.cnblogs.com/mindyme/p/4633886.html