@dynamic與@synthesize的區(qū)別
@property有兩個(gè)對(duì)應(yīng)的詞者疤,一個(gè)是@synthesize咒精,一個(gè)是@dynamic见坑。默認(rèn)的是@syntheszie var = _var;
- @synthesize:編譯器自動(dòng)生成getter/setter方法琼蚯,重寫(xiě)了這2個(gè)方法后,則會(huì)覆蓋編譯器生成的方法
@dynamic: 不會(huì)自動(dòng)生成getter/setter方法违施,可以解用來(lái)編譯期間的警告,但在使用對(duì)應(yīng)的讀寫(xiě)屬性時(shí)僵蛛,需要提供對(duì)應(yīng)的方法尚蝌,否則會(huì)崩潰
2.若對(duì)一個(gè)屬性使用了@dynamic var = _var,則編譯器立馬報(bào)錯(cuò)充尉。
不能在var的setter方法和getter方法中使用_var飘言,或self.var
如下代碼會(huì)導(dǎo)致系統(tǒng)無(wú)限循環(huán)后crash
- (void)setVar:(id)newVar
{
self.var =newVar;
}
- (void)var
{
return self.var;
}