我有一個的NSOperation NSOperationQueue,在我的NSOperation .hi具有這種性質:的dealloc中的NSOperation
@interface MyOperationClass : NSOperation
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSManagedObject *myObject;
@property (nonatomic, retain) NSMutableArray *myArray;
@end
,這在的NSOperation的的dealloc在.m文件:
- (void)dealloc {
[__fetchedResultsController release];
[__managedObjectContext release];
[myObject release];
[myArray release];
[super dealloc];
}
在另一類我增加操作的隊列中以這樣的方式
MyOperationClass *myOperation = [[MyOperationClass alloc] init];
[myOperationQueue addOperation:myOperation];
[myOperation release];
,但給我就行了bad_exc_access [myArray發佈];我錯了什麼?
編輯:我注意到在代碼我這樣做:
wikiEpisodeArray = [NSMutableArray的arrayWithArray:otherArray];
也許是這樣嗎?我沒有用[NSMutableArray alloc]初始化它?
編輯2: 我還有一個類似的問題,我也有這個變量:
@property (nonatimc, retain) NSString *previousTime;
,我以這種方式初始化它:
previousTime = [[NSString alloc] init];
,並在代碼中,我從來沒有釋放它,只在dealloc中,現在我收到這條線上的壞的訪問權限:
[previousTime release];
in dealloc ... 爲什麼?你可能沒有分配的內存對象,你是釋放
的聲音,我喜歡的東西* *其他發佈你的「'MyOperationClass'」'myArray'對象。如果它是我的代碼,我會運行Xcode的工具並使用ObjectAlloc模板來查看誰正在保留和釋放對象的元素。 –
哦......嘿。我也在你的接口聲明中看到ARC關鍵字「'strong」。我個人還沒有很多ARC的經驗,但我認爲ARC的巨大「勝利」是你不必管理dealloc或release。 –
我沒有ARC在我的項目中,所以我必須改變它在非原子保留?...實際上我想做另一個關於這個堆棧溢出的問題... – Piero