iPad/iPhone 中的 @dynamic 是什么

发布于 2024-10-27 11:41:56 字数 56 浏览 1 评论 0 原文

我只是想知道 Objective-C 中的 @dynamic 是什么意思以及它是如何工作的。请帮忙

I am jus wondering what is mean by @dynamic in objective-c and how it works.any help please

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人的旅程 2024-11-03 11:41:56

@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 中的元编程不适合胆小的人,在你理解它之前不要发布它,否则你的用户将遭受痛苦。

@dynamic means that you will provide an implementation of those methods dynamically at run time.

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

has all the details, but basically using @dynamic means that you promise to provide implementations for the property promised methods at runtime.

In particular look here;

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

for an example of how you'd construct your dynamic method and place it into the runtime.

Core Data uses this mechanism to provide the accessors. It's quite amazingly cool, once you dig into it :)

And as a side note, meta-programming in ObjC is not for the faint of heart, don't ship it till you grok it, otherwise your users will suffer.

南…巷孤猫 2024-11-03 11:41:56

我引用苹果的书Objective-C 编程语言

@动态

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

您可以找到 pdf 副本 此处

I am quoting Apple's book The Objective-C Programming Language:

@dynamic

You use the @dynamic keyword to tell
the compiler that you will fulfill the
API contract implied by a property
either by providing method
implementations directly or at runtime
using other mechanisms such as dynamic
loading of code or dynamic method
resolution. It suppresses the warnings
that the compiler would otherwise
generate if it can’t find suitable
implementations. You should use it
only if you know that the methods will
be available at runtime.

You can find a pdf copy here.

强辩 2024-11-03 11:41:56

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

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

Using @dynamic requires that you provide getter/setter methods yourself.

Instead @synthesize creates the getter/setter methods for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文