Q
爭議與目標C
2
A
回答
3
一個對象只保留在內存中,而至少有一個對它的強(默認)引用。如果您只使用弱引用,則該對象將立即解除分配。
簡單地說,「弱」意味着:這個對象屬於別人,我只能訪問它,我不介意它是否消失。
2
Objective-C中的Weak引用讓我們避免保留週期,爲什麼不一直使用它們?
因爲只要沒有強引用,對象就會被釋放。
更重要的是,爲防止對象的重新分配,通常需要強大的引用。例如,視圖控制器最終對其視圖負責 - 讓控制器的視圖突然消失是沒有多大意義的。所以UIViewController的view
屬性很強大。
保留週期發生在兩個對象各自具有強引用時。只要另一個對象保持強引用,任何對象都不能被釋放。如果你意識到這種情況,這並不是一個問題,因爲你可以通過消除任一參考來打破保留週期。然而,很容易讓而不是意識到這個循環,或忘記處理它,然後你有兩個對象在超出其使用壽命的時間內保持在內存中。使這些引用中的一個弱化可以消除這個問題,但這也意味着被引用的對象可能會被釋放,並且引用可能在任何時候都成爲零。實際上,這通常不是問題。
相關問題
- 1. 目標C與目標C++
- 2. 目標C中的協議
- 3. 目標C:模塊與選擇器與協議
- 4. DatabaseMetaData.ownDeletesAreVisible VS DatabaseMetaData.deletesAreDetected爭議
- 5. 請與目標C
- 6. 目標C,大約在協議
- 7. 代表和協議目標C
- 8. 目標C初始化協議中
- 9. 目標c繼承/協議混淆:UITableViewController
- 10. 建議用於使用目標C
- 11. 整合目標C協議與斯威夫特
- 12. 潛在簡單的目標C錯誤與協議
- 13. FindBugs有爭議的描述
- 14. Square Connect API扣款/爭議
- 15. 不符合協議斯威夫特父類 - 目標C協議
- 16. 聲明符合目標c協議與一個類別,並與另一類別
- 17. 目標C:與其他類
- 18. 問題與目標C hash256
- 19. 目標C:問題與
- 20. 解析XML與目標C
- 21. 問題與dataTaskWithRequest(目標c)
- 22. 不能與目標C
- 23. web服務與目標-c
- 24. NSManagedObject與活性目標C
- 25. 目標C與填充
- 26. 使用與目標C
- 27. Ant不會啓動戰爭目標
- 28. 完成目標的競爭條件
- 29. 無競爭目錄散步(C++)
- 30. 與罐子Maven的戰爭項目
如果一切都很微弱,就沒有任何東西會引用任何東西,所有的對象都會立即消失。 – rmaddy
順便說一句 - 你指的是什麼「爭議」? – rmaddy
@rmaddy,這意味着如果我使用弱引用創建兩個指向其他對象的對象,它們將立即消失? – user3524337