【问题标题】:require that an object passed into an objective C method conform to a protocol?要求传递给目标 C 方法的对象符合协议?
【发布时间】:2010-07-18 02:10:01
【问题描述】:

这可能吗?例如,我有一个带有 init 方法的类 TriangleDataView。目前该方法是这样声明的:

- (id)initWithFrame:(CGRect)frame delegate: (id) delegateObject;

我想要求 delegateObject 符合 UITextFieldDelegate 协议。但是它的语法是什么?

【问题讨论】:

    标签: objective-c methods protocols


    【解决方案1】:
    - (id)initWithFrame:(CGRect)frame delegate:(id<UITextFieldDelegate>)delegateObject;
    

    【讨论】:

    • +1:但是,我相信这只会引发警告。如果他真的想检查,他可以添加if (![delegateObject conformsToProtocol: @protocol(UITextFieldDelegate)]) 并抛出异常。也许您可以添加它以获得更完整的答案?
    • @sdolan,更好的答案是 -Werror(将警告视为错误)。 ObjC 在很大程度上依赖于正确编码的警告,你永远不应该忽略它们。
    • @Rob Napier:谢谢,我不知道那个标志(虽然我在实践中做同样的事情)。我的建议的唯一优点是,如果您将代码分发给没有该标志的其他开发人员,不修复警告,并且无法调试由于未在几秒钟内实现协议而导致的“doesNotRespondToSelector”异常。
    • +1 @Rob:这是任何人都应该为新项目打开的第一个标志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2016-11-17
    • 2015-04-02
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多