这一直在杀我..因为它是一个内存管理问题......
我在第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 ...那么为什么发布不起作用?!
答案 0 :(得分:0)
这没有意义,因为我使用的是我声明的sourceArray 据我所知,COPY为Class 2提供了自己的数组版本。
这就是想法,但它可能会帮助您知道-copy
通常只保留不可变对象的对象。这对您的代码无关紧要,因为原始文件与不可变对象的副本无法区分。可能是你在Class1中过度释放了数组,只有当Class2释放它的数组“副本”时才会出现问题。