Objective c 在类中保留NS(可变)数组时出错

Objective c 在类中保留NS(可变)数组时出错,objective-c,nsmutablearray,nsarray,retain,Objective C,Nsmutablearray,Nsarray,Retain,我在使用数组时遇到了困难。来自AS2/AS3和垃圾收集对我来说是新的…;) 这不是完整的代码,只是重要的部分 .h-file @interface HelperViewController : UIViewController { NSMutableArray *pagesNumbers; } @property (nonatomic, retain) NSMutableArray *pagesNumbers; .m-file @synthesize pagesNumbers; -(v

我在使用数组时遇到了困难。来自AS2/AS3和垃圾收集对我来说是新的…;)

这不是完整的代码,只是重要的部分

.h-file
@interface HelperViewController : UIViewController {
    NSMutableArray *pagesNumbers;
}
@property (nonatomic, retain) NSMutableArray *pagesNumbers;

.m-file
@synthesize pagesNumbers;
-(void)loadView {
    pagesNumbers = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:1], [NSNumber numberWithInt:1], [NSNumber numberWithInt:1], nil];
    NSLog(@"pagesNumbers: %@", pagesNumbers); // WORKS!
}
-(void)changePage:(id)sender {
    NSLog(@"pagesNumbers: %@", pagesNumbers); // PROBLEM*
}
上面的问题*是,当viewDidLoad调用函数时,它会工作,但当稍后使用以下(非常有用的)消息被UIButton调用时,它会崩溃:

[会议于2009-08-2511:12:51+0200开始。] GNU gdb 6.3.50-20050815(苹果版gdb-966)(2009年3月10日星期二02:43:13 UTC) 版权所有2004免费软件基金会。 GDB是自由软件,受GNU通用公共许可证的保护,您是 欢迎在特定条件下更改和/或分发副本。 键入“显示复制”以查看条件。 GDB绝对没有保修。有关详细信息,请键入“显示保修”。 此GDB配置为“i386 apple darwin”。sharedlibrary应用所有加载规则 连接到过程13197

有人能帮忙吗

问候,,
Eric.

看起来页面成员没有被保留

尝试添加:

[pagesNumbers retain];
在loadview中初始化阵列后

我相信arrayWithObjects将返回一个自动释放的数组,因此如果以后要使用它,需要显式保留它

编辑,刚刚注意到pagesNumbers也是一个属性。您正在直接初始化pagesNumbers,这样合成的setter就不会被调用(也不会被自动保留)。如果您想使用属性设置器,我相信您需要使用self引用pagesNumbers,即

self.pagesNumbers = [NSMutableArray arrayWithObjects.....
多谢了,汤姆,“自我”成功了。在你的解释下,使用“自我”这个词终于永久地烙进了我的大脑。祝你有一个愉快的一天,我的今天要感谢你