读书人

@dynamic 跟@synthesize区别@encode

发布时间: 2012-12-19 14:13:14 作者: rapoo

@dynamic 和@synthesize区别,@encode

?

@dynamic 是相对于 @synthesize的,它们用样用于修饰 @property,用于生成对应的的getter和setter方法。但是@?dynamic表示这个成员变量的getter和setter方法并不是直接由编译器生成,而是手工生成或者运行时生成。示例如下:@implementation ClassName
@synthesize aProperty,?bProperty;
@synthesize cProperty=instanceVariableName;
@dynamic anotherProperty;

// method implementations
@end
@encode 是用于表示一个类型的字符串,对此,苹果有专门的介绍文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html?

示例代码如下:

-(void)?aMethod
{
? ??char?*enc1?=?@encode(int);?? ? ? ? ? ? ? ??// enc1 = "i"
? ??char?*enc2?=?@encode(id);?? ? ? ? ? ? ? ? ?// enc2 = "@"
? ??char?*enc3?=?@encode(@selector(aMethod));??// enc3 = ":"

? ??// practical example:
? ? CGRect rect?=?CGRectMake(0,?0,?100,?100);
? ? NSValue?*v?=?[NSValue value:&rect withObjCType:@encode(CGRect)];
}

读书人网 >移动开发

热点推荐