释放使用initWithInteger创建的NSNumber实例:与numberWithInt:

xux*_*uxu 1 cocoa memory-management objective-c

在Objective-C 2.0编程一书的第326页上,作者说:

myNumber = [[NSNumber alloc] initWithInt: 1000];  
Run Code Online (Sandbox Code Playgroud)

当然,根据之前的讨论,如果您以myNumber这种方式创建,那么当您使用以下语句完成后,您有责任随后将其释放:

[myNumber release];  
Run Code Online (Sandbox Code Playgroud)

我的问题是:

这是否意味着如果我NSNumber用这个语句创建一个对象

NSNumber *myNumber = [NSNumber numberWithInteger: 100];  
Run Code Online (Sandbox Code Playgroud)

我不必myNumber自己发布这个对象?

Ale*_*yne 6

这个链接是你的圣经

如果[NSNumber numberWithInt:]它返回一个自动释放的对象,你不需要做任何事情来正确释放它.retain当然,除非你这样,否则你可以release通过你的dealloc方法调用它.

[[NSNumber alloc] initWithInt:]返回一个保留计数为1的对象(来自调用alloc).您负责释放以这种方式创建的任何对象.