Re: Cocoa class extension best practice
Re: Cocoa class extension best practice
- Subject: Re: Cocoa class extension best practice
- From: Andy Lee <email@hidden>
- Date: Tue, 15 Oct 2013 19:27:57 -0400
On Oct 15, 2013, at 6:22 PM, Graham Cox <email@hidden> wrote:
>
> On 15/10/2013, at 11:10 PM, "Mills, Steve" <email@hidden> wrote:
>
>> No, it's the itemArray. Ignore the code you can't see in the loop. It's simply asking each item for its tag.
>
>
> OK, so if that's the case, I'm interested in knowing whether each call to -itemArray returns the same object or a different one each time.
In my tests I NSLog them and they're different every time. BTW I repeated my test on 10.8.5. The project does not use ARC and Leaks does not show leaks after I call itemArray thousands of times in response to button presses. Allocations go up and come back down as they should.
> If it's different, then it's either a copy of some internal array or something built on the fly. It should therefore be autoreleased. If your (incorrect, but understandable) attempt to call -release causes a crash, then it definitely is being (over)released at some point, so it can't be leaking as long as there really is an autorelease pool in place. So that might lead you to look at how and where these methods are being called, e.g. sure they're on the main thread, within a runloop event handler of some sort?
As a sort of test probe you could create some other object that should definitely *not* leak, and see if it does. Next to the call to itemArray, something like
NSArray* items = [self itemArray];
for(NSMenuItem* item in items)
blah;
for (NSInteger i = 0; i < 10000; i++)
[[[NSObject alloc] init] autorelease];
If you leak thousands of NSObject instances, you know it's not a problem specific to itemArray. More likely it has to do with the questions Graham posed about when your method is getting called.
--Andy
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden