@dynamic與@synthesize的區別
@property有兩個對應的詞,一個是@synthesize,一個是@dynamic。默認的是@syntheszie var = _var;
- @synthesize:編譯器自動生成getter/setter方法,重寫了這2個方法后,則會覆蓋編譯器生成的方法
@dynamic: 不會自動生成getter/setter方法,可以解用來編譯期間的警告,但在使用對應的讀寫屬性時,需要提供對應的方法,否則會崩潰
2.若對一個屬性使用了@dynamic var = _var,則編譯器立馬報錯。
不能在var的setter方法和getter方法中使用_var,或self.var
如下代碼會導致系統無限循環后crash
- (void)setVar:(id)newVar
{
self.var =newVar;
}
- (void)var
{
return self.var;
}