第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iOS 開發(fā) issue:一個assign 和 weak 的 實例分析

iOS 開發(fā) issue:一個assign 和 weak 的 實例分析

ibeautiful 2019-05-23 16:18:30
iOS開發(fā),使用Objective-C,屬性前面用assign和weak修飾。使用assign修飾對象,會導(dǎo)致野指針。因為assign修飾的對象銷毀后,refence沒有置為nil.我同事寫了很多這樣的代碼,為什么App運行好好的,從來沒有Crash?@interfaceZBStoreInfoVC:UIViewController@property(nonatomic,assign)iddelegate;@endiddelegate一般賦給另外一個UIViewController,是對象。不是值類型
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

1.這么寫肯定是會不對的,會崩潰。稍微寫個小測試,確實會奔潰。
Book*book=[[Bookalloc]init];
{//從作用域出去后store就會釋放
Store*store=[[Storealloc]init];
book.delegate=store;
}
[booktest];
.....
-(void)test{
NSLog(@"booktest");
if([self.delegaterespondsToSelector:@selector(testDelegate)]){
[self.delegatetestDelegate];
}
}
2.為什么沒出現(xiàn)奔潰?可能是delegate很少優(yōu)先于self釋放,可能delegate因為其他原因沒釋放(單例或者引用循環(huán)等)。一般來說被委托者應(yīng)該在更深的層級,會先釋放,比如界面A->B->C,這樣情況,肯定是C作為B的委托,C會先于B釋放。這個問題你逐個的檢查一下為什么沒有奔潰。主要看:是否delegate釋放了還回去調(diào)用self.delegate之類的。
                            
查看完整回答
反對 回復(fù) 2019-05-23
?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

使用weak修飾時,當屬性所指向的對象內(nèi)存引用計數(shù)為0時會自動賦值為nil,而assign則不會.所以當assign修飾的delegate指向的對象dealloc(內(nèi)存釋放)后,再去訪問deleagte系統(tǒng)會奔潰
                            
查看完整回答
反對 回復(fù) 2019-05-23
  • 2 回答
  • 0 關(guān)注
  • 634 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號