ios - Objective c 初始值设定项的歧义

标签 ios objective-c constructor dependency-injection

我是 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/

相关文章:

java - GUI 未显示在我的屏幕上

c++ - 对象 std::string 出错

ios - NSPredicate 没有响应

ios - 状态栏隐藏后 View 被推下?

iphone - 可以在 EAGLLayer 之上使用 Quartz 2D 绘图吗?

ios - 如何通过 Objective-C 中的引导访问检测硬件按钮是否被禁用?

iphone - ScrollRectToVisible 未按预期工作

ios - Cordova iframe webview 在横向和纵向之间切换 - 页面调整大小

ios - UIWebView 从 NSString 加载 PDF 字节

java - Java 中的深拷贝构造函数