gpt4 book ai didi

iphone - iPad 大型 NSArray - initWithObjects 与 ArrayWithObjects

转载 作者:行者123 更新时间:2023-12-03 20:26:07 25 4
gpt4 key购买 nike

有人可以帮我解决这个问题吗?
我正在构建一个 iPad 应用程序,它有一个 TableViewController,应该显示 1000 到 2000 个字符串之间的内容。我在单例中有那些 NSString。
在单例的 init 方法中,我初始化了一个包含所有数据的数组(不一定是最终的方法 - 只是快速复制和粘贴以进行测试)
我做了一个 self.someArray = [[NSArray alloc]initWithObjects: ,后面跟着大量字符串,然后是 nil。
在模拟器中运行良好 - 但在 iPad 上应用程序启动时访问错误而崩溃
如果我使用方便的方法 [NSArray arrayWithObjects: - 它工作正常。
我查看了 Instruments,发现该应用程序的整体内存占用量仅为 2.5 MB 左右。
现在我不知道为什么它以一种方式起作用,而以另一种方式不起作用。
编辑:

#import "StaticValueContainer.h"`

static StaticValueContainer* instance = nil;
@implementation StaticValueContainer
@synthesize customerRatingKeys;

+(StaticValueContainer*)sharedInstance
{
if (instance == nil){
instance = [[StaticValueContainer alloc]init];
}
return instance;
}

-(id)init
{
if ( ( self = [super init] ))
{
[self initCustomerRatingKeys];

}
return self;
}
-(void)init customerRatingKeys
{
self.customerRatingKeys = [[NSArray alloc]initWithObjects:
@"string1",
....
@"string1245"

,nil
}

正如我所说:它在设备上崩溃 self.customerRatingKeys = [[NSArray alloc]initWithObjects:但适用于 *self.customerRatingKeys = [[NSArray arrayWithObjects...`

最佳答案

嗯,它们之间没有太大区别:arrayWithObjects 返回一个自动释放数组,您不需要自己释放该数组(除非您随后保留它) ),并且 initWithObjects 返回一个数组,您必须随后释放它以避免内存泄漏。就性能而言,它们之间没有区别。

我建议,如果您使用 initWithObjects 遇到错误访问错误,但使用 arrayWithObjects 则没有,那么您的代码中可能存在某种内存管理错误。如果您发布代码本身,您可能会得到更准确的响应。

关于iphone - iPad 大型 NSArray - initWithObjects 与 ArrayWithObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5155097/

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