【问题标题】:Call Method As Property Objective-C调用方法作为属性 Objective-C
【发布时间】:2012-02-05 06:10:32
【问题描述】:

这两者有什么区别?

[SomeClass.classMethod instanceMethod];
[[SomeClass classMethod] instanceMethod];

classMethod of SomeClass 返回一个单例对象,在该对象上调用 instanceMethod。这两种方法都有效,而且 Xcode 在执行期间或代码中都不会抱怨。但是,键入 SomeClass.classMethod 不会在下拉列表中显示任何匹配项,而 [SomeClass classMethod] 会。这只是一个缺失的功能还是故意阻止这种做法?

【问题讨论】:

    标签: objective-c methods properties


    【解决方案1】:

    点语法 (SomeClass.classMethod) 只是发送消息 ([SomeClass classMethod]) 的语法糖。他们做同样的事情。

    您看不到属性的完成(点语法)可能是因为您尝试访问其属性的对象未正确转换为具有该属性的类型:

    [UIApplication sharedApplication].delegate.myproperty // <-- No completion
    [[UIApplication sharedApplication].delegate myproperty] // <-- Completion
    

    发生这种情况是因为delegateid,因此没有属性(它是泛型类型的对象),因此自动补全不能提供任何建议。后一种是向泛型对象发送消息,因此编译器可以建议您发送大量消息(无论该对象是否支持它们)。

    【讨论】:

    • 谢谢,这可能就是原因。必须记住不要太频繁地依赖自动完成,有时我必须构建它才能启动,或者在屏幕的不同部分输入。
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多