我有NSarray,我想从我的所有方法访问,(我想要它全局),我将在我的.m文件中定义的一个方法中填充此数组(仅一次)。 我的问题是......是否真的可以在.h中声明NSArray并将其定位在其他地方,或者只需在声明(初始化)时定义它。
我的当前代码
.h文件
@interface slots2ViewController : UIViewController {
NSArray* paylinesArr;
}
我从ViewDidLoad调用follwing方法
.m文件
-(void)init_payline_arr
{
NSString* filePath = @"/Users/net4uonline/Desktop/slots2/paylines.txt";//filepath...
NSString *fileContents = [NSString stringWithContentsOfFile: filePath];
paylinesArr = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
}
我无法使用其他方法中的paylinesArr数组,如果调用后续函数,应用程序崩溃
-(IBAction)ShowVal
{
NSLog(@"number of elements! %@",[paylinesArr count]);
}
或者 我应该使用NSMutabbleArray吗?
如果你想看到我在使用调试工具时上传了我的桌面视频! the link to video
在这个视频中我按下调试器的录音按钮(我已启用ns僵尸和保留计数),应用程序启动,我按下旋转按钮,显然它崩溃了...然后我告诉你的代码
paylinesArr = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] retain];
保留paylineArr
答案 0 :(得分:3)
NSMutableArray
对你没有帮助!您的错误的原因是您的paylinesArr
变量是自动释放变量,因此可能在调用ShowVal之前已取消分配。尽量保留它
-(void)init_payline_arr {
...
paylinesArr = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] retain];
...
}
这应该有效。但是不要忘记用viewDidUnload
方法发布它:
- (void)viewDidUnload {
[super viewDidUnload];
...
[paylinesArr release];
}