NSNumber numberWithFloat vs Init和alloc

din*_*ngh 5 xcode objective-c ios

我有这行代码,并试图弄清楚我编写它的方式的优缺点.我只是想设置一个浮动值的标签,两者都工作....只是不知道哪个更好......

self.display.text=[[NSNumber numberWithFloat:32.445] stringValue];
Run Code Online (Sandbox Code Playgroud)

说有什么不同吗?

NSNumber *number = [[NSNumber alloc]initWithFloat:32.445];
self.display.text = [number stringValue];
Run Code Online (Sandbox Code Playgroud)

嗯 - 我知道必须有区别 - 只是不确定它会是什么.好像第一个更像是一个包装器(如果有意义的话)?

谢谢!!!

Jul*_*ien 9

[NSNumber numberWithFloat:32.445]
Run Code Online (Sandbox Code Playgroud)

相当于:

[[[NSNumber alloc] initWithFloat:32.445] autorelease]
Run Code Online (Sandbox Code Playgroud)

在手动参考计数模式.在ARC或GC模式下,您可以将其视为等效于:

[[NSNumber alloc] initWithFloat:32.445]
Run Code Online (Sandbox Code Playgroud)

您可能获得的唯一好处是尝试autorelease在MRC模式下避免呼叫并将其替换为release呼叫.