Iphone 解除锁定操作

Iphone 解除锁定操作,iphone,ios,nsoperation,nsoperationqueue,dealloc,Iphone,Ios,Nsoperation,Nsoperationqueue,Dealloc,我的NSOperation中有一个NSOperationQueue和NSOperation。我有以下属性: @interface MyOperationClass : NSOperation @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSManagedObjectContext *managedObjectCo

我的NSOperation中有一个NSOperationQueue和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
在.m文件中NSOperation的DEALOC中:

- (void)dealloc {
[__fetchedResultsController release];
[__managedObjectContext release];
[myObject release];
[myArray release];
[super dealloc];
}
在另一个类中,我以以下方式在队列中添加操作:

MyOperationClass *myOperation = [[MyOperationClass alloc] init];
[myOperationQueue addOperation:myOperation];
[myOperation release];
previousTime = [[NSString alloc] init];
但是在[myArray release]的线路上给我一个错误的exc访问权限;我怎么了

编辑:我注意到在代码中我这样做:

WikieSodeArray=[NSMutableArray arrayWithArray:otherArray]

也许是这个?我没有用[NSMutableArray alloc]初始化它

编辑2: 我还有另一个类似的问题,我还有一个变量:

@property (nonatimc, retain) NSString *previousTime;
我这样初始化它:

MyOperationClass *myOperation = [[MyOperationClass alloc] init];
[myOperationQueue addOperation:myOperation];
[myOperation release];
previousTime = [[NSString alloc] init];
在代码中,我从未发布它,只是在dealloc中,现在我在这一行收到一个错误的exc访问:

[previousTime release];
在dealloc。。。
为什么?

您可能没有将内存分配给要释放的对象

如果您没有arc,那么您必须使用(非原子,保留)(或者分配,如果不保留它)

此外,任何未显式alloc的对象都应自动返回。所以不要释放它们

如果您想创建一个可变数组,您应该使用另一个数组创建一个可变数组

[NSMutableArray alloc] initWithArray:aArray];
对于NSString,请使用(非原子,复制),同样,当您使用@“something”分配NSString时,您是在分配一个覆盖先前[NSString alloc]init]的自动删除字符串

因此,如果您想拥有该字符串,则应执行以下操作:

[NSString alloc] initWithString:aString]; 

对我来说,听起来像是发布了您的“
MyOperationClass
myArray
对象。如果是我的代码,我会运行Xcode的工具并使用ObjectAlloc模板来查看谁在保留和释放对象的元素。哦。。。呵呵。我还在界面声明中看到ARC关键字“
strong
”。我个人对ARC还没有太多的经验,但我认为ARC的最大“胜利”是你不必去管理dealloc或发布。我的项目中没有ARC,所以我必须在非原子保留中更改它?…事实上,我想问另一个关于堆栈溢出的问题…如果你使用ARC,您不必释放成员变量。你在用ARC吗?另外,试着打开僵尸,看看这是否指出了问题所在。是的,Piero的行“
[NSMutableArray arrayWithArray:otherArray];
”意味着他的“
myArray
”对象是自动删除的。。。这就是为什么他看到的是
EXEC\u BAD\u ACCESS
crashok谢谢,而不是强非原子?我能用吗?还是非原子的更好?我没有ARC…strong和retain,因为它们都创建了变量的强引用。您在哪里初始化了字符串…哪种方法?非常感谢diego,您非常有帮助,所以我更改了非原子,复制,而我没有更改[previousTime release],对吗?