[英]objective-C. Arc library in non-arc
我將PESGraph弧庫添加到沒有弧的項目中。
我已經找到了答案,它是可能的,它確實有效。 但是如何在非弧項目中處理來自弧庫的對象的內存。 我的意思是至少分配,保留,釋放。
例如,如果聲明為retain屬性,我可以在aralloc方法中為對象寫入arc嗎?
如果在禁用ARC的情況下編譯文件,則可以在該文件中調用release
(和retain
and autorelease
),並且您負責在適當的位置進行這些調用。
ARC的想法是,當啟用ARC時,編譯器會為您插入這些調用。 如果您為某些文件禁用了ARC,則必須在這些文件中自行插入呼叫。
如果禁用ARC,則需要retain
, release
和autorelease
對象時,Cocoa具有非常強的約定。 閱讀Cocoa核心能力:內存管理入門。 如果您需要更多詳細信息,請查看高級內存管理編程指南 。 它並不是非常先進。
啟用ARC時,編譯器遵循相同的約定。 這就是為什么您可以在同一個可執行文件中鏈接啟用ARC的文件和ARC禁用的文件。
Cocoa中的內存管理是完全本地的 - 需要在函數中執行的內存管理操作只能通過查看該函數來確定,而無需關心其他代碼。 每個功能都可以在內存管理方面獨立考慮,只要它們都遵循規則。 ARC只是自動實現規則(您將在MRC中遵循的規則)。 代碼的不同部分可以獨立使用ARC或MRC,而不會相互影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.