有以前的 邮政 关于@synthesize和@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。

我的问题是,在这种NSManageBject情况下,超级类NsmanagedObject中Getter/Setter的粗略实现是什么?

除上述情况外,还有多少个使用@Dynamic的情况?

谢谢,

有帮助吗?

解决方案

@dynamic 向编译器指示您计划为访问者提供自己的实现,即使编译器当前看不到它们。如果您省略 @dynamic 并且不要使用 @synthesize, ,将发生两件事之一:

  1. 如果您只提供了一半的登录器(例如,一个没有设置器的Getter readwrite 属性),或者您正在使用GCC,编译器会警告您。
  2. 如果您使用clang编译代码,则将自动为您生成适当的访问者。 (不正式支持默认合成。)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top