实例变量未在内存中分配
Posted
技术标签:
【中文标题】实例变量未在内存中分配【英文标题】:Instance Variable not allocating in memory 【发布时间】:2012-09-25 12:33:18 【问题描述】:我有一个 NSObject 类,其中我定义了一个 init 方法,如下所示,
- (id)initWithPlistName:(NSString *)plistFileName
if (self = [super init])
plistName = plistFileName;
plistContent = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:plistName ofType:@"plist"]]; // this plistContent array is not allocating in memory
return self;
我在我的应用AppDelegate类didFinishLaunchingWithOptions方法中调用这个方法,plistContent是我的iVar键入 NSArray 但只要控制权进入 plistContent alloc init 行并且在返回 self 时,就没有为我的数组分配内存。 这里可能发生了什么问题,提前感谢任何帮助。
【问题讨论】:
你是如何在 appDelegate 中分配初始化对象的 在 appDelegate 中显示你的 didFinish 的 d 代码.. 我已经编辑了我的答案,请看.. 【参考方案1】:我想您没有将 plist 中 plist 根键的数据类型从字典更改为数组
【讨论】:
【参考方案2】:检查文件是否存在:
NSString *path = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
if(path)
plistContent = [[NSArray alloc] initWithContentsOfFile:path];
else
NSLog(@"File Not exists");
【讨论】:
您的答案是正确的,但您不需要使用NSFileManager
进行检查,因为如果文件不存在,pathForResource:ofType
将返回nil
。我希望你不介意我编辑你的答案:/【参考方案3】:
试试这个
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"plistName" ofType:@"plist"];
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
NSArray *array = [NSArray arrayWithArray:[myDict objectForKey:@"Root"]];
【讨论】:
以上是关于实例变量未在内存中分配的主要内容,如果未能解决你的问题,请参考以下文章