释放复制的对象时EXC_BAD_ACCESS

时间:2011-12-16 03:30:21

标签: iphone objective-c ios memory-management exc-bad-access

这一直在杀我..因为它是一个内存管理问题......

我在第2课

中创建了一个类似的NSArray
@property (nonatomic, copy) NSArray * sourceArray;

我将这个数组设置为另一个类,比如Class 1,就像......

Class2 = [[Class2 alloc] initWithFrame:self.bounds];
[Class2 setSourceArray:self.namesArray];

我确信self.namesArray包含对象。

当我发布Class 1时,它会释放Class 2,因为Class 2是Class 1中的子视图,这是预期的,但是当Class 2在dealloc中发布sourceArray时我得到了EXEC_BAD_ACCESS ......

[sourceArray release];

如果我不在类1中释放namesArray,我不会得到这个错误。这没有意义,因为我使用我声明的sourceArray作为COPY,据我所知,它给了Class 2它自己的数组版本。

有人可以帮我吗?它杀了我!

更多信息: 在我尝试发布sourcearray之前的引用计数是1 ...那么为什么发布不起作用?!

1 个答案:

答案 0 :(得分:0)

  

这没有意义,因为我使用的是我声明的sourceArray   据我所知,COPY为Class 2提供了自己的数组版本。

这就是想法,但它可能会帮助您知道-copy通常只保留不可变对象的对象。这对您的代码无关紧要,因为原始文件与不可变对象的副本无法区分。可能是你在Class1中过度释放了数组,只有当Class2释放它的数组“副本”时才会出现问题。

相关问题