gpt4 book ai didi

iphone - @dynamic 使用的常见情况是什么?

转载 作者:行者123 更新时间:2023-12-03 19:14:47 24 4
gpt4 key购买 nike

有以前的post关于@synthesize和@dynamic的区别。

我想从通常如何使用@dynamic的角度来了解更多关于dynamic的知识。

通常我们将@dynamic与NSManagedObject一起使用

// Movie.h
@interface Movie : NSManagedObject {
}
@property (retain) NSString* title;
@end

// Movie.m
@implementation Movie
@dynamic title;
@end

根据@dynamic的理解,实际上编译时并没有生成getter/setter,所以需要实现自己的getter/setter。

我的问题是,在这个 NSManagedObject 案例中,父类(super class) NSManagedObject 中 getter/setter 的粗略实现是什么?

除了上面的情况,还有多少情况需要使用@dynamic?

谢谢

最佳答案

@dynamic 向编译器表明您计划为访问器提供您自己的实现,即使编译器当前无法看到它们。如果您省略 @dynamic 并且不使用 @synthesize,则会发生以下两种情况之一:

  1. 如果您只提供了一半的访问器(例如,readwrite 属性上没有 setter 的 getter),或者您使用的是 GCC,编译器会向您发出警告。
  2. 如果您使用 Clang 编译代码,系统会自动为您生成正确的访问器。 (默认不支持 Synthesize。)
因此,

@dynamic 对于防止编译器执行上述任一操作非常有用。如果您以非常动态的方式实现属性(例如使用运行时函数),这也可能会派上用场,但这很少有必要。

关于iphone - @dynamic 使用的常见情况是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com