Objective-Cのメモリ管理で自信がなくなる瞬間は誰しも必ずあると思う。 [iOS]

「エキスパート Objective-Cプログラミング 〜 iOS/OS Xのメモリ管理とマルチスレッド 〜」という本を読んでたところ、
「自分が生成したオブジェクトの所有者は自分である」という表現で、自分がなんだかわからなくなって、自分探しをしてみました。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        NSObject *object1 = [[NSObject alloc] init];
        NSObject *object2 = nil;
        
        object2 = object1;
		
        [object1 release];
        
        NSObject *object3 =nil;
        
        object3 = object2;
		
        [object2 release];

    }
    return 0;
}
import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        NSObject *object1 = [[NSObject alloc] init];
        NSObject *object2 = nil;
        
        object2 = object1;
		
        [object2 release];
        
        NSObject *object3 =nil;
        
        object3 = object2;
		
        [object3 retain];
        
        [object1 release];
        
    }
    return 0;
}

結構、どっちがどういうことか、わからない人いるんじゃないの?と思った次第です。