@synthesize和@dynamic之间存在先前的post差异。
我想从通常如何使用@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案例中,超类NSManagedObject中getter / setter的粗略实现是什么?
除了上述情况,还有多少其他案例要使用@dynamic?
谢谢,
答案 0 :(得分:4)
@dynamic
向编译器指示您计划为访问器提供自己的实现,即使编译器当前无法看到它们。如果省略@dynamic
而不使用@synthesize
,则会发生以下两种情况之一:
readwrite
属性上没有setter的getter),或者你正在使用GCC,编译器会发出警告。 @dynamic
可以防止编译器执行上述任一操作。如果以非常动态的方式实现属性(如运行时函数),这也可能会派上用场,但这很少需要。