我是 Objective-C 的新手,但在 C# 方面有相当多的经验。我正在尝试检查 Objective-C 中的一些依赖注入(inject)框架。在研究一些框架时,我发现了一些与 Objective-C 类中的构造函数/初始化器非常不同的东西。
如果我想通过如下构造函数注入(inject)一个对象,
-(id)initWithService:(id<ServiceProtocol>)service;
当然,这不会是默认构造函数,并且控件不会进入此处,直到从其他地方调用它。
只有 -(id)init
是默认的构造函数,当这个对象被注入(inject)时,控制就在这里。
所以我想知道从 -(id)init
调用 initWithService
是否是一个好习惯?
或者对于每个类只有两个初始化器仅在模拟期间使用带有构造函数的初始化器并在框架自动初始化过程中忽略它?
最佳答案
如此处所写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;
}
关于ios - Objective c 初始值设定项的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256523/