@Dynamic用法的常见情况是什么?
-
13-10-2019 - |
题
有以前的 邮政 关于@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
, ,将发生两件事之一:
- 如果您只提供了一半的登录器(例如,一个没有设置器的Getter
readwrite
属性),或者您正在使用GCC,编译器会警告您。 如果您使用clang编译代码,则将自动为您生成适当的访问者。(不正式支持默认合成。)
@dynamic
因此,对于防止编译器执行上述任何一个非常有用。如果您以非常动态的方式(例如运行时功能)实现属性,这也可能会派上用场,但这很少是必要的。
不隶属于 StackOverflow