Objective c初始化器的歧义

时间:2016-03-28 05:29:26

标签: ios objective-c constructor dependency-injection

我是Objective-C的新手,但在C#方面有相当多的经验。我试图在Objective-C中查看一些依赖注入框架。在研究一些框架时,我发现了一些与Objective-C类中的构造函数/初始化程序有很大不同的东西。

如果我想通过下面的构造函数注入一个对象,

-(id)initWithService:(id<ServiceProtocol>)service;

当然这不是默认构造函数,并且在从其他地方调用之前,控件不会进入此处。

只有-(id)init是默认构造函数,当注入此对象时,控件将在此处。

所以我想知道从initWithService拨打-(id)init这是一个好习惯吗?

或者对于每个类只有两个初始值设定项仅在模拟期间使用构造函数初始化器,并在框架的自动初始化过程中忽略它?

1 个答案:

答案 0 :(得分:-2)


正如这里所写https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210-CH1-SW1
最佳做法是以这种方式使用指定的初始化器

-(instanceType)initWithYourNeeds:(SomeClassName *)obj
{
    if(self==[super init])
    {
        //do some stuff here
    }
   retur self;
}