簡體   English   中英

在 objective-c 中保留按值傳遞的變量是否可以?

[英]is it OK to retain a variable passed by value in objective-c?

在 objective-c 中保留按值傳遞的變量是否可以?

也就是說:

  • 我有 controller 1 我有一個變量,我傳遞給 controller 2
  • 它通過引用有效地傳遞,當用戶點擊 controller 2 UINavigationController 后退按鈕時,我可以使用它,因為該值將在 controller 中修改
  • 在 controller 2 中,我根據以下代碼設置了一個 ivar

問題 - 那么這個 controller 2 變量是否可以使用“保留”設置,並在“dealloc”方法中“釋放”並設置為零? 那它不會影響 controller 1 的 object 嗎? 例如,如果 controller 2 被釋放並且“release”和“=nil”被擊中,會發生什么情況,這會影響 object,因為它仍然被 Z594C103F2C6E04C3D8AB059F031E0 使用。

Controller 2 代碼提取

@interface SelectorController : UITableViewController {
    Config *_returnObject;
}
@property (nonatomic, retain) Config *returnObject;
@end


// implementation
@synthesize config;  
- (void)dealloc
{
    [config release];               config = nil;
    [super dealloc];
}

視情況而定,您可以在 View Controller 2 中保留變量。因為每個 controller 都將負責他們的變量。 相反,如果您分配變量,即使您在第二個 controller 中使用該變量,它也將是第一個 controller 的負責人。

保留和釋放 controller 2 中的變量非常好,這是你應該做的。 :)

在 controller 2 中將變量設置為nil ,只會將變量設置為 nil,而不是變量指向的內容,因此您的 object 仍將存在 Z594C103F2C6E04C3D18AB059F031 中的變量。

暫無
暫無

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

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