Objective c NSMutableArray属性是否自动删除?
我的大脑模型中定义了一个NSMutableArray属性Objective c NSMutableArray属性是否自动删除?,objective-c,Objective C,我的大脑模型中定义了一个NSMutableArray属性 @property (retain, nonatomic) NSMutableArray *stockColors; 可变数组在Brain初始化期间被对象填充 在我的视图控制器viewDidLoad函数中 *Brain brain = [[Brain alloc]init]; NSLog(@"Brain stockColors is %@", brain.stockColors); 这工作得很好,并且按照预期记录内存地址 然后在同一个
@property (retain, nonatomic) NSMutableArray *stockColors;
可变数组在Brain初始化期间被对象填充
在我的视图控制器viewDidLoad函数中
*Brain brain = [[Brain alloc]init];
NSLog(@"Brain stockColors is %@", brain.stockColors);
这工作得很好,并且按照预期记录内存地址
然后在同一个视图控制器中,我声明了一个“addButtonPressed”操作链接到.xib中的UIButton
在我的addbuttonPressed操作中,如果我尝试执行完全相同的日志
NSLog(@"Brain stockColors is %@", brain.stockColors);
程序崩溃了
如果我这样做
NSLog(@"Brain stockColors is %@", brain);
我得到了大脑的地址。。。所以大脑是存在的。。但由于某种原因,当我进入addButtonPressed动作时,brain.StockColor似乎正在被释放或其他什么
谁能解释一下是什么导致它自动释放
考虑到您遗漏了重要的代码,谢谢。。。实际的
Brain
init调用我要说的是,当您创建可变数组时,您分配给的是实例变量,而不是属性
//The Brain init method should contain something similar to this
self.stockColor = [NSMutableArray array];
//stockColor = [NSMutableArray array]; would be incorrect and get autoreleased
我不明白这一点。什么是
Brain
类?为什么不是大脑*Brain
?使用stockColors
和IBAction
的类名是什么?你能告诉我们Brain
的init方法吗?除了*Brain-Brain
是无效语法之外,变量Brain
甚至不应该存在于viewDidLoad
之外,因为它是一个局部变量,所以在那里写brain.stockColors
不应该编译。如果你发布真实的代码,而不是你在web浏览器中编写的代码,这些代码有20个不相关的问题,甚至可能不包括导致你悲伤的实际错误,这会更有帮助。这是正确的!一旦我在init中添加了“self”,它就成功了!