日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 中strong,weak,copy,assign区别

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 中strong,weak,copy,assign区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:ARC環境下,strong代替retain.weak代替assign
2:weak的作用:在ARC環境下,,所有指向這個對象的weak指針都將被置為nil。這個T特性很有用,相信很多開發者都被指針指向已釋放的對象所造成的EXC_BAD_ACCESS困擾過,使用ARC以后,不論是strong還是weak類型的指針,都不會再指向一個已經銷毀的對象,從根本上解決了意外釋放導致的crash。

?3:assign的作用:簡單賦值,不改變引用計數,對基礎數據類型 (例如NSInteger,CGFloat)和C數據類型(int, float, double, char, 等) 適用簡單數據類型?
4:copy的作用:建立一個索引計數為1 的對象,然后釋放舊對象?
5:strong的作用:在ARC環境下,只要某一對象被一個strong指針指向,該對象就不會被銷毀。如果對象沒有被任何strong指針指向,那么就會被銷毀。在默認情況下,所有的實例變量和局部變量都是strong類型的。可以說strong類型的指針在行為上跟非ARC下得retain是比較相似的?

6:retain的作用:在非ARC時代,你需要自己retain一個想要保持的對象,ARC環境下就不需要了。現在唯一要做的就是用一個指針指向這個對象,只要指針沒有被重置為空,對象就會一直在堆上。當指針指向新值的時候,原來的對象就會被release一次。這對實例變量,sunthesize的變量或者是局部變量都是實用的。

基本上:

? ??NSString類用copy,控件類用weak,,復雜數據類的用strong,數字類,比如INUIgter,nsinter,cgreck這些用assign

?

? ? ?特別說明一下,在xib/SB拖的控件,連接到代碼建議使用weak。系統原生創建的也是(weak, nonatomic)。不要去更改了,知道為啥不?因為控件拖到xib/SB后,系統自動為其賦了strong,所以拖到代碼就用weak就行了。不信你右鍵xib/SB ->在XML格式下查看就什么都明白了

?

? ? ?如果一個對象在某段時間中反復加載,而你又不希望每次加載都要重新alloc 的話,那就strong,strong 保證對此對象保持一個強引用,對于這個對象,只要有1個strong引用的話,那它就不會 釋放,當然多個strong同時作用于它也不會釋放。

如果一個對象在某段時間只會加載一次,并且加載之后確定不再使用了,那就可以使用weak,這樣當其他原因導致引用計數減1(比如 removefromsuperview)的時候,此對象就自動釋放了。無需再在delloc 里面再release一次,但你要保證釋放之后確實不再使用此對象,否則將導致錯誤

其實strong和retain的作用有些像,只不過strong 和weak是在arc里面引入的,他倆算是一對兒, 對應關系有點類似 retain 和assign?

總結

以上是生活随笔為你收集整理的iOS 中strong,weak,copy,assign区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。