gpt4 book ai didi

objective-c - 使 NSArray 全局化

转载 作者:行者123 更新时间:2023-12-04 06:25:00 26 4
gpt4 key购买 nike

我有 NSarray,我想从我的所有方法中访问它,(我希望它是全局的),我将在我在 .m 文件中定义的方法之一中填充这个数组(仅一次)。
我的问题是......真的有可能在.h中声明一个NSArray并将其定义在其他地方,或者它只需要在声明时定义(初始化)。

我的当前代码

.h 文件

@interface slots2ViewController : UIViewController {
NSArray* paylinesArr;
}

我正在从 ViewDidLoad 调用以下方法

.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

最佳答案

NSMutableArray不会帮你!您的错误原因是您的 paylinesArr变量是自动释放变量,所以它可能在调用 ShowVal 之前被释放。试着保留它

-(void)init_payline_arr {
...
paylinesArr = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] retain];
...
}

这应该有效。但不要忘记在 viewDidUnload 中发布它方法:
- (void)viewDidUnload {
[super viewDidUnload];
...
[paylinesArr release];
}

关于objective-c - 使 NSArray 全局化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com