一個ASIFormDataRequest後,我從JSON創建一個臨時的NSMutableArray * resultArray然後將其添加到規定的NSMutableArray * myData的如何維護陣列的方法以外的目標C
-(void)viewDidLoad{
myData = [[NSMutableArray alloc] init];
//request that calls gotInfo method
}
-(void)gotInfo:(ASIFormDataRequest *)request{
NSString *responseString = [request responseString];
NSMutableArray *resultArray = [responseString yajl_JSON];
[myData addObject:resultArray];
}
-(IBAction)doSomethingWithData:(id)sender{
//something with myData
}
,但是當我嘗試調用的myData從gotInfo:方法以外,我得到錯誤的訪問錯誤,當我檢查方法以外的myData時,它顯示kern_protection_failure。所以我猜測,除了方法之外,resultArray顯然已經發布,但它也從myData中釋放出來,因爲myData中的對象共享相同的內存位置? 我也試過
-(void)gotInfo:(ASIFormDataRequest *)request{
NSString *responseString = [request responseString];
[myData addObject:[responseString yajl_JSON]];
}
如何保存myData?
#import <UIKit/UIKit.h>
@class ASIFormDataRequest;
@interface EventsTableController : UITableViewController <UITableViewDataSource>{
NSMutableArray *myData;
}
-(void)gotInfo:(ASIFormDataRequest *)request;
UPDATE:
所以在GBD中,myData的分配爲0x5e96560所以我也
po 0x5e96560
,然後我得到的
在我的頭文件EXC_BAD_ACCESS,原因是地址爲KERN_PROTECTION_FAILURE:0x00000009
但如果我這樣做
po [[0x5e96560 objectAtIndex:0] objectForKey:@"key"]
然後我得到的價值! whyyyyyy?
可能您張貼在那裏你初始化'myData'的代碼? – Saphrosit
@Saphrosit:我使用代碼 –
更新了我的文章由於您正在向數組myData添加對象[responseString yajl_JSON],因此數組myData將對象的保留計數增加1,因此它可能必須處理方法yajl_JSON 。你確定它返回一個NSMutableArray指針嗎? – msgambel