【问题标题】:Why does Xcode "does not conform to protocol fix-it" adds many methods为什么Xcode“不符合协议fix-it”增加了很多方法
【发布时间】:2018-06-22 09:44:44
【问题描述】:

Xcode 有一个新的“修复”功能,用于自动实现协议方法。这是一个例子:

MFMessageComposeViewControllerDelegate 只有一个方法。但是,当我单击“修复”按钮时,Xcode 会创建 MANY 无关的方法存根:

我没有添加任何新的其他协议,如下:

@interface TUDiscoverInviteViewController ()<CNContactPickerDelegate, MFMessageComposeViewControllerDelegate>

@end

我的视图控制器仅派生自 UITableViewController。这些方法存根来自哪里?如何防止这种行为?

我使用的是 Xcode 9.2。

【问题讨论】:

    标签: objective-c xcode xcode9


    【解决方案1】:

    UITableViewController 符合 UITableViewDataSourceUITableViewDelegate,因此您也可以获得这些方法存根。

    我看不到让 Xcode 只为一个协议生成存根的方法,除非暂时删除其他协议并更改您的基类。

    如果您使用AppCode,那么您可以使用 AppCode 的代码 > 生成 > 实施方法界面来选择您想要存根的成员:

    【讨论】:

    • 呃,我没有 AppCode。我可以删除它们,当然,我只是好奇为什么会这样。您对表格视图协议是正确的,但是所有其他协议呢? setFocusUpdateencodeWithCoder:、特征收集方法等?
    • 哦,等等,刚刚通过查看UIViewController 类:NS_CLASS_AVAILABLE_IOS(2_0) @interface UIViewController : UIResponder &lt;NSCoding, UIAppearanceContainer, UITraitEnvironment, UIContentContainer, UIFocusEnvironment&gt;来回答我自己
    • @rob : 不是每个用户都可以访问 IDE!
    • 这就是为什么我说“如果你使用 AppCode”,而不是“使用 AppCode”。
    • @robmayoff 您能否扩展您的答案,以更清楚地说明 fix-it 函数为所有超类创建显式存根,即使它们已经在 UIViewController 中实现,以供未来用户澄清?
    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多