There is previous post about difference of @synthesize and @dynamic.
I wanna to know more about dynamic from the perspective of how to use @dynamic usually.
Usually we use @dynamic together with NSManagedObject
// Movie.h
@interface Movie : NSManagedObject {
}
@property (retain) NSString* title;
@end
// Movie.m
@implementation Movie
@dynamic title;
@end
Actually there are no generated getter/setter during compiler time according to understanding of @dynamic, so it is necessary to implement your own getter/setter.
My question is that in this NSManagedObject case, what is the rough implementation of getter/setter in super class NSManagedObject ?
Except above case, how many other cases to use @dynamic ?
Thanks,
@dynamic
indicates to the compiler that you plan to provide your own implementation for the accessor(s), even if the compiler can't currently see them. If you omit @dynamic
and don't use @synthesize
, one of two things will happen:
- If you've only provided half an accessor (for instance, a getter without a setter on a
readwrite
property), or you're using GCC, the compiler will warn you.
If you're using Clang to compile your code, proper accessors will be automatically generated for you. (Synthesize-by-default is not officially supported.)
@dynamic
is therefore useful to prevent the compiler from doing either of the above. This might also come in handy if you implement a property in a very dynamic way, like with runtime functions, but that's rarely necessary.