相关疑难解决方法(0)

使用alloc init而不是new

学习Objective-C并阅读示例代码,我注意到对象通常是使用以下方法创建的:

SomeObject *myObject = [[SomeObject alloc] init];
Run Code Online (Sandbox Code Playgroud)

代替:

SomeObject *myObject = [SomeObject new];
Run Code Online (Sandbox Code Playgroud)

是否有理由这样做,因为我已经读到它们是等同的?

oop objective-c

337
推荐指数
5
解决办法
10万
查看次数

为什么在Objective-C中单独调用alloc和init?

注意:我对Objective-C比较新,我来自Java和PHP.

有人可以向我解释为什么我总是要先分配然后初始化一个实例?

不能在这样的init方法中完成:

+ (MyClass*)init {
    MyClass *instance = [MyClass alloc];
    [instance setFoo:@"bla"];

    return instance;
}

+ (MyClass*)initWithString:(NSString*)text {
    MyClass *instance = [MyClass init];
    [instance setFoo:text];

    return instance;
}
...
Run Code Online (Sandbox Code Playgroud)

这只是旧C日的残骸还是有些东西我没有看到?

我知道这不是问题,因为我总是可以调用alloc和init,但由于它有点乏味,我想至少知道我为什么要这样做.

到目前为止,我喜欢语言的表达能力,但这是我想要完全理解的,以便考虑Objective-C的方式.

谢谢!

oop cocoa objective-c init alloc

15
推荐指数
5
解决办法
6402
查看次数

标签 统计

objective-c ×2

oop ×2

alloc ×1

cocoa ×1

init ×1