【问题标题】:Generate custom init method automatically自动生成自定义初始化方法
【发布时间】:2014-04-29 09:47:56
【问题描述】:

是否可以从 Xcode 自动生成自定义 init 方法,就像 Android Studio 为 android 所做的那样? 我的意思是,如果我在 .h 中声明一些属性,例如: 诠释一个; 诠释 b;

所以,我想自动创建一个 init 方法:

- (id)initWithA:(int) aInner andB:(int) bInner
{
     a = aInner;
     b = bInner;
}

【问题讨论】:

    标签: ios xcode init


    【解决方案1】:

    新的 Xcode(Xcode 10 之后)支持这个问题的类(不是结构)。

    步骤:

    1. 右键单击类名
    2. 点击“重构”
    3. 点击“生成成员初始化器”

    至于结构。您可以先使其成为类,并在获得自动生成初始化后将其更改回结构。

    【讨论】:

    • 结构体的快速说明——如果你没有在初始化器中做任何额外的逻辑,它将被暗示。感谢您告诉我在哪里可以找到课程。
    • @Wu:惊人的解决方案。我想知道我怎么从来不知道这条捷径。谢谢!!我尝试了结构。它无需将其更改为类即可工作。
    • Xcode 13 也可以为结构生成成员初始化器。不仅适用于课程。
    【解决方案2】:

    虽然仍然无法自动执行此操作(无需安装插件),但有一个巧妙的技巧可以使用多个游标将属性声明列表转换为赋值:

    • 复制属性列表并将其粘贴到您的构造函数中
    • 使用Shift+Ctrl+点击插入多个光标(Shift+Ctrl+/ 也可以)
    • 使用多个光标进行编辑以分配值

    感谢 Paul Hudson:Xcode in 20 Seconds: Multiple cursors

    【讨论】:

      【解决方案3】:

      没有本地方法可以做到这一点,但是您可以安装 XCode 扩展来添加对此的支持。

      请参阅以下扩展,因为它将提供您所追求的功能(Swift 版本)。

      https://github.com/Bouke/SwiftInitializerGenerator

      【讨论】:

      • 我对其进行了测试,效果很好。这是唯一真正有效的解决方案。
      【解决方案4】:

      你可以创建一个 sn-p。你需要稍微玩一下,在相关的地方创建漂亮的蓝色占位符,但最重要的是,给它附加一个键盘快捷键。例如“initx”

      然后您只需开始在您希望初始化程序所在的行中键入快捷方式,瞧,您就有了自定义的初始化程序。

      【讨论】:

        【解决方案5】:

        是的,你可以通过自定义的init方法初始化一个类,或者你可以在你想用自定义的init方法初始化类时传递参数

        在你的 class.h 文件中定义

         @interface CustomView : UIView 
           - (id)initWithA:(int) aInner andB:(int) bInner
        

        在 .m 文件中实现 initWithStringMethod.

         - (id)initWithA:(int) aInner andB:(int) bInner
               {
                if((self = [super init]))
        
        
                return self;
                }
        

        从其他类或视图控制器初始化的类

         CustomView *cv = [[CustomView alloc] initWithA:5 andB:10 ];
        

        【讨论】:

        • OP 说“由 Xcode 自动生成自定义初始化程序”。您的建议在哪里是自动生成?您的示例是手动(手动)实现。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 1970-01-01
        • 2011-08-06
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多