【问题标题】:What is @dynamic in iPad/iPhoneiPad/iPhone 中的@dynamic 是什么
【发布时间】:2011-03-25 13:04:44
【问题描述】:

我只是想知道 Objective-c 中的@dynamic 是什么意思以及它是如何工作的。请提供任何帮助

【问题讨论】:

    标签: iphone objective-c ipad dynamic


    【解决方案1】:

    @dynamic 表示您将在运行时动态提供这些方法的实现。

    http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtDynamicResolution.html

    包含所有细节,但基本上使用@dynamic 意味着您承诺在运行时为属性承诺的方法提供实现。

    这里特别看;

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

    有关如何构造动态方法并将其放入运行时的示例。

    Core Data 使用这种机制来提供访问器。一旦你深入了解它,它就非常酷:)

    顺便说一句,ObjC 中的元编程不适合胆小的人,在你了解它之前不要发布它,否则你的用户会受到影响。

    【讨论】:

      【解决方案2】:

      我引用苹果的书The Objective-C Programming Language

      @动态

      您使用@dynamic 关键字来告诉 您将完成的编译器 属性隐含的 API 契约 要么通过提供方法 直接或在运行时实现 使用其他机制,例如动态 加载代码或动态方法 解析度。它抑制警告 否则编译器会 如果找不到合适的则生成 实施。你应该使用它 只有当你知道这些方法会 在运行时可用。

      你可以找到一个pdf副本here

      【讨论】:

        【解决方案3】:

        使用@dynamic 需要您自己提供getter/setter 方法。

        相反,@synthesize 会为您创建 getter/setter 方法。

        【讨论】:

        • 有些类会自动生成方法,比如NSManagedObject。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 2013-12-16
        • 2021-08-18
        • 1970-01-01
        • 2011-12-05
        • 2014-11-05
        相关资源
        最近更新 更多