簡體   English   中英

方法是否在Objective-C中保留參數?

[英]Do methods retain arguments in Objective-C?

方法是否保留傳遞的參數? 如果是這樣,我可以在下一行釋放這些參數嗎? 如果沒有,那我什么時候釋放這些對象(以防我在本地分配這些對象)?

語言不會自動保留參數。 但是,遵守規則的代碼將在執行離開范圍后保留或復制需要保留的所有內容。

換一種說法:

id object = [[SomeClass alloc] init];
[otherObject doSomethingWithObject:object];
[object release];

該代碼應始終是好的,因為如果doSomethingWithObject:需要保持它的參數周圍,它會發出它retain ,如果沒有,也不會。

不,他們只是處理對象,不控制內存。

您應該使用創建方法釋放一些內容。 或者,如果它是屬性或ivar,則應在dealloc中釋放它(如果已保留)。

方法不增加引用計數。 但是,如果將其分配給具有保留計數的變量,則需要向兩者顯式發送一條nil消息。 當您不再想要使用變量時,可以完成釋放。 因此,每當發送保留消息時,分配的變量的引用計數就會增加。 因此,您需要發送相等數量的釋放消息,直到引用計數變為零為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM