那些被遗漏的Objective-C保留字

本文详细介绍了Objective-C2.0中的@dynamic、@encode、@compatibility_alias三个编译器保留字,包括它们的定义、用途及示例代码,旨在帮助开发者更好地理解和使用这些关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Steffen Itterheim《Learn Iphone and Ipad Cocos2d Game Development》作者。cocos2d现在已成为iphone游戏开发中重要的开发框架之一。在 AppStore 上有超过 100 个游戏是基于 Cocos2D。其中 3 个进入过 TOP 10 的排名。

那些被遗漏的Objective-C保留字 - 唐巧 - 唐巧的iphone开发博客
他在他的博客中总结了 objective-c 2.0 所有的编译器保留字,并且对这些保留字做了介绍和使用示例。地址是: (需要)
这些保留字如下:
我把这些保留字过了一遍,发现之前没有听过的有 @dynamic @encode @compatibility_alis,所以就给大家介绍一下这三个关键字吧。

@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 ) ] ;
}


@compatibility_alis 是用于给一个类设置一个别名。这样就不用重构以前的类文件就可以用新的名字来替代原有名字。示例:
@compatibility_alias AliasClassName ExistingClassName

总结一下,似乎这三个保留字都不怎么给力,估计大家很少会用到它们。不过有一个热心者根据他的博文,生成了一张Objective-C 2.0 @Compiler Directives Cheat Sheet,对于新手来说,把这张cheat sheet打印出来,对于熟悉现在的保留字还是很有用的,cheat sheet的下载地址是: http://maniacdev.com/cheatsheetobjccd.pdf



from:http://tangqiaoboy.blog.163.com/blog/static/116114258201110133108545/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值