转自:
下面的写法是不建议的:
NSObject* someObject = [NSObject alloc];
[someObject init];
建议的做法是:
NSObject* someObject = [[NSObject alloc] init];
有些 class factory 方法可以替代这里的 alloc/init 嵌套做法,用一个方法把二者都做了,效果和先 alloc 紧接着 alloc 是一样的,比如:
NSNumber *magicNumber = [NSNumber numberWithInt:42];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
原文如下:
Note: It’s possible for init
to return a different object than was created by alloc
, so it’s best practice to nest the calls as shown.
Never initialize an object without reassigning any pointer to that object. As an example, don’t do this:
NSObject *someObject = [NSObject alloc]; |
[someObject init]; |
init
returns some other object, you’ll be left with a pointer to the object that was originally allocated but never initialized.