在 objective-c 中保留按值传递的变量是否可以?
也就是说:
- 我有 Controller 1 我有一个传递给 Controller 2 的变量
- 它通过引用有效传递,当用户点击 Controller 2 UINavigationController 后退按钮时我可以使用它,因为该值将在 Controller 1 中修改
- 在 Controller 2 中,我根据下面的代码设置了一个 ivar
问题 - 那么可以使用“保留”设置此 Controller 2 变量,并在“dealloc”方法中将其“释放”并设置为 nil 吗?那是它不会影响 Controller 1 的对象吗?例如,如果 Controller 2 被解除分配并且“release”和“=nil”被命中,会发生什么情况,这是否会影响对象,因为它仍然被 Controller 1 使用。
Controller 2 代码摘录
@interface SelectorController : UITableViewController {
Config *_returnObject;
}
@property (nonatomic, retain) Config *returnObject;
@end
// implementation
@synthesize config;
- (void)dealloc
{
[config release]; config = nil;
[super dealloc];
}
最佳答案
保留和释放 Controller 2 中的变量不仅仅是 OK,这是你应该做的。 :)
在 Controller 2 中将变量设置为 nil
,只会将变量设置为 nil,而不是变量指向的内容,因此您的对象仍将存在于 Controller 1 中的变量一起工作。
关于iphone - 在 objective-c 中保留按值传递的变量是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649103/