This has been killing me.. Because its a memory management issue…
I have a NSArray created like so in say Class 2
@property (nonatomic, copy) NSArray * sourceArray;
I set this array from another class say Class 1 like …
Class2 = [[Class2 alloc] initWithFrame:self.bounds];
[Class2 setSourceArray:self.namesArray];
Where I am sure that self.namesArray contains objects.
When I release Class 1, it releases Class 2 since Class 2 is a subview in Class 1 which is expected, but I get an EXEC_BAD_ACCESS when Class 2 releases sourceArray in dealloc like so…
[sourceArray release];
I DO NOT get this error if I do not release namesArray in Class 1.. Which doesn’t make sense because I am using I declared sourceArray as COPY which to my knowledge gives Class 2 its own version of the array…
Can anyone help me here? Its killing me!
More info:
The reference count right before I try to release sourcearray is 1… So Why would a release not work?!
That’s the idea, but it may help you to know that
-copyoften just retains the object for immutable objects. That shouldn’t matter to your code, since the original is indistinguishable from a copy for immutable objects. It may be that you’re over-releasing the array in Class1, and the problem only shows up when Class2 releases it’s “copy” of the array.