我有一个带有 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] 初始化它?
编辑2: 我有另一个类似的问题,我也有这个变量:
@property (nonatimc, retain) NSString *previousTime;
我以这种方式初始化它:
previousTime = [[NSString alloc] init];
在代码中我从不释放它,只在dealloc中,现在我在这一行收到一个错误的exc访问:
[previousTime release];
在dealloc ...为什么?