实例变量不在内存中分配

时间:2012-09-25 12:33:18

标签: iphone objective-c ios xcode memory-management

我有一个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,就没有为我的数组分配内存。 可能是这里发生的问题,提前感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

检查文件存在:

NSString *path = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
if(path)
{
   plistContent = [[NSArray alloc] initWithContentsOfFile:path]; 
}
else
{
  NSLog(@"File Not exists");
}

答案 1 :(得分:1)

我想您没有将plist flie中的plist根密钥的数据类型从字典更改为数组

答案 2 :(得分:0)

试试这个

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"plistName" ofType:@"plist"];
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
NSArray *array = [NSArray arrayWithArray:[myDict objectForKey:@"Root"]];