我對Cocoa仍然很陌生,對內存管理知之甚少。我閱讀了Apple的文檔,但我仍然感到困惑。我的問題是,如果我在dowhatever
結束時將變量的值設置爲- (void)dowhatever
,變量的內容是否會被刪除?如果是的話,是否有一種方法(無需寫入文件)可以用來保留變量內容?保留可可中的信息?
感謝所有幫助
我對Cocoa仍然很陌生,對內存管理知之甚少。我閱讀了Apple的文檔,但我仍然感到困惑。我的問題是,如果我在dowhatever
結束時將變量的值設置爲- (void)dowhatever
,變量的內容是否會被刪除?如果是的話,是否有一種方法(無需寫入文件)可以用來保留變量內容?保留可可中的信息?
感謝所有幫助
我的問題是,如果我在一個
- (void)dowhatever
設置一個變量的值時,虛空結束,...
void
是一種類型。它沒有開始也沒有結束。
具體來說,它是dowhatever
方法的返回類型。如果dowhatever
返回一個值,那麼返回值的類型將是您擁有void
;它會說,例如,- (NSUInteger) doWhatever
。有void
意味着該方法不返回一個值。
另請參閱Objective-C 2.0 Programming Language文檔。
...變量的內容是否會被刪除?
如果它是一個局部變量,那麼該方法返回時該變量將不再存在。
只要變量存在的實例(對象)存在,實例變量就存在 - 也就是說,直到實例被解除分配爲止。
實例變量也包含在Objective-C文檔中。
如果是這樣,有一種方法(不寫入文件),我可以用來保留變量的內容?
如果您只需將對象返回給調用者,請保留它並自動釋放它。有關更多信息,請參閱Memory Management Programming Guide for Cocoa。
如果這不是你正在做的事情,那麼問題就變成爲什麼你需要對象保持活着。
根據對象思考:對象可能擁有某些其他對象,並且對於它擁有的每個對象都有一個實例變量*。只要你擁有自己的所有權,並以代碼維護它們,對象的生命週期就可以工作。
如果對象A需要另一個對象B,那麼A應該擁有B.這個所有權不是唯一的;它可以共同擁有B.但它至少需要共同擁有B;只要有至少一個所有者,B就會一直活着。
這也在內存管理指南中介紹過。對於對象之間關係的其他示例,您應該翻閱Cocoa Fundamentals Guide,特別是Cocoa's design patterns的章節,並且您可能需要查看sample code以查看實踐中演示的模式。
*它也可以具有它不屬於的對象的實例變量,例如委託。你可以擁有一個你不擁有的對象的實例變量,但如果你擁有它,你應該有一個實例變量。