iphone - 在 objective-c 中保留按值传递的变量是否可以?

标签 iphone objective-c ios pass-by-reference retain

在 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/

相关文章:

ios - Azure 媒体服务 - iOS 上的字幕 - native 而非 AMP

iphone - 使用Web服务发送图像还是使用Smtp发送电子邮件?

iphone - alloc + init with synthesized property - 它会导致保留计数增加 2 吗?

iphone - 在 iOS 4.3 模拟器上调试

iPhone即时消息应用教程

ios - UIBarButtonItem 垂直定位

iphone - 如何编程 UITextField 的键盘以在 viewDidLoad 上打开?

ios - 在 Spritekit 中横向显示 Game Center Modal View Controller 时没有键盘

objective-c - 删除核心数据实体中的二进制属性的数据(在 NSImageView 中使用)

ios - 多行标签在 Xcode 9 的表格 View 单元格中显示额外的空格