私は NSOperation で NSOperationQueue を持っています。私の NSOperation .hi には次のプロパティがあります:
@interface MyOperationClass : NSOperation
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSManagedObject *myObject;
@property (nonatomic, retain) NSMutableArray *myArray;
@end
これは、.m ファイルの NSOperation の dealloc にあります。
- (void)dealloc {
[__fetchedResultsController release];
[__managedObjectContext release];
[myObject release];
[myArray release];
[super dealloc];
}
別のクラスでは、次の方法で操作をキューに追加します。
MyOperationClass *myOperation = [[MyOperationClass alloc] init];
[myOperationQueue addOperation:myOperation];
[myOperation release];
しかし、[myArray release] の行で bad_exc_access を教えてください。私は何を間違っていますか?
編集:コードでこれを行うことに気付きました:
wikiEpisodeArray = [NSMutableArray arrayWithArray:otherArray];
多分これですか?[NSMutableArray alloc] で初期化していませんか?
EDIT 2: 別の同様の問題があります。この変数もあります:
@property (nonatimc, retain) NSString *previousTime;
そして、私はこの方法でそれを初期化しました:
previousTime = [[NSString alloc] init];
そしてコードでは、解放することはなく、dealloc でのみ、次の行で不適切な exc アクセスを受け取ります。
[previousTime release];
解放で...なぜですか?