2012-09-25 80 views
1

我有一個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; 
} 

我調用這個方法在我的應用程序的AppDelegatedidFinishLaunchingWithOptions方法,plistContent是我類型的NSArray伊娃每當控制來plistContent的alloc初始化線和在返回自我,沒有分配給我的數組的內存。 這裏可能會發生什麼問題,提前有任何幫助。

+0

如何有你在AppDelegate中分配了對象的初始化 – AppleDelegate

+0

在appDelegate中顯示你的didFinish的d代碼.. – vishy

+0

我編輯了我的答案,請看.. –

回答

1

我想你還沒有在你的plist flie改變了數據類型您的plist根密鑰從字典到陣列

+0

謝謝你的提示 –

0

試一下這個

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

檢查文件是否存在:

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

你的答案是現貨,但你不需要使用'NSFileManager'來檢查,因爲如果文件不存在,'pathForResource:ofType'將返回'nil'。我希望你不介意我編輯你的答案:/ – deanWombourne

+0

我非常歡迎 –