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