最新的assign與weak的區別 看不明白你打我
1 能否產生野指標的區別
weak 修飾的變數使用之後,不會產生野指標,因為其指向的資料清空時,變數會自動置空。 weak是安全的。
assign 修飾的變數使用之後如果沒有置空,可能會產生野指標。
2 修飾物件型別的區別
首先資料分為 物件型別(object) 和 非物件型別(CGFLoat,NSInteger)
weak 只可以修飾物件。(如果你修飾非物件型別,編譯器會報錯)
assign 只修飾非物件型別。 當需要修飾物件型別時,MRC時代使用unsafe_unretained。當然,unsafe_unretained也可能產生野指標,所以它名字是"unsafe_***"。現在就用weak基本沒問題了。
相關文章
- BIO、NIO、AIO區別(看不懂你打我)AI
- __weak與__block區別,深層理解兩者區別BloC
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- ClickHouse與Hive的區別,終於有人講明白了Hive
- 一句話說明白C#中的new與override的區別C#IDE
- 看不懂來打我,Vue3的watch是如何實現監聽的?Vue
- 5分鐘讓你明白“軟連結”和“硬連結”的區別
- defineProperty 和 Proxy區別(直接上結論有一句廢話你打我)
- Innodb的RR到底有沒有解決幻讀?看不懂你打我!
- 看不懂來打我,Vue3的watch是如何實現監聽的?KNVue
- ??與?:的區別
- 看不懂來打我!讓效能提升56%的Vue3.5響應式重構Vue
- Deno 正式釋出,徹底弄明白和 node 的區別
- 你真的瞭解HTTP中GET與POST的區別嗎?HTTP
- 一文帶你搞清 ChatGPT 與 Azure OpenAI 的區別ChatGPTOpenAI
- 可怕!那些你看不到的程式
- const與static的區別
- HTTP 與 HTTPS 的區別HTTP
- getAttribute() 與 attr() 的區別
- @import與<link> 的區別Import
- Postgresql與MySQL的區別MySql
- HashSet與HashMap的區別HashMap
- HashTable與ConcurrentHashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- @Autowired 與@Resource的區別
- gulp與webpack的區別Web
- free 與 CFRelease 的區別
- post與get的區別
- Git與GitHub的區別Github
- Comparable與Comparator的區別
- volatile與synchronized的區別synchronized
- Javascript中“==”與“===”的區別JavaScript
- ICMP與IGMP的區別
- UDP與TCP的區別UDPTCP
- WebApp與NativeApp的區別WebAPP
- mysql與Oracle的區別MySqlOracle
- Synchronized 與 ReentrantLock 的區別synchronizedReentrantLock
- let與var的區別