Search code examples
iosmemory-managementretaincount

Why retainCount = 2 - after release?


I use this code.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    view = [[UIView alloc] init];

    [_window addSubview:view];

    [view release];

    NSLog(@"count - %d", [view retainCount]);

    [self.window makeKeyAndVisible];

    return YES;

}


- (IBAction)click{

    NSLog(@"count - %d", [view retainCount]); 

}

When i click to uibutton - my view retain count = 2. Why is this happening?


Solution

  • Please do not count on retainCount. Fire up Instruments and see if there is a leak. Apple discourages the use of retainCount for debugging purposes:

    Important: This method is typically of no value in debugging memory management issues. Because any number of framework objects may have retained an object in order to hold references to it, while at the same time autorelease pools may be holding any number of deferred releases on an object, it is very unlikely that you can get useful information from this method.

    Have a look at the NSObjectProtocol and the retainCount documentation. Read the Memory Management Programming Guide for a deeper understanding of retain counts.