那些被遗漏的Objective-C保留字
来源:互联网 发布:淘宝美工笨的人难学吗 编辑:程序博客网 时间:2024/05/20 16:34
前言
Steffen Itterheim是《LearnIphone and Ipad Cocos2d GameDevelopment》作者。cocos2d和cocos2d-x现在已成为著名的游戏开发引擎。在AppStore上有超过100个游戏是基于Cocos2D。
Steffen Itterheim在他的博客中总结了Objective-C 2.0 所有的编译器保留字,并且对这些保留字做了介绍和使用示例。这些保留字如下:
@class@defs@protocol @required @optional @end@interface @public @package @protected @private @property @end@implementation @synthesize @dynamic @end@throw @try @catch @finally@synchronized @autoreleasepool@selector @encode@compatibility_alias@”string”
我把这些保留字过了一遍,发现很少用到的有 @dynamic @defs @encode@compatibility_alis,所以就给大家介绍一下这几个关键字吧。
@dynamic
@dynamic 是相对于 @synthesize的,它们用样用于修饰@property,用于生成对应的的getter和setter方法。但是@dynamic表示这个成员变量的getter和setter方法并不是直接由编译器生成,而是手工生成或者运行时生成。
示例如下:
@defs
@defs用于返回一个Objective-C类的struct结构,这个struct与原Objective-C类具有相同的内存布局。就象你所知的那样,Objective-C类可以理解成由基本的Cstruct加上额外的方法构成。
示例代码如下:
你可能会想,什么情况下才会需要使用这个关键字。答案是涉及非常底层的操作或优化的时候才会用到。像如这篇讨论Objective-C如何做缓存优化的文章中,就用到了该关键字。
@encode
@encode 是用于表示一个类型的字符串,对此,苹果有专门的介绍文档
示例如下:
@compatibility_alis
@compatibility_alis 是用于给一个类设置一个别名。这样就不用重构以前的类文件就可以用新的名字来替代原有名字。
示例如下:
@autoreleasepool
@autoreleasepool 是用于ARC下代替NSAutoreleasePool的保留字,我把它写在这里,是想告诉那些以为ARC慢的同学,在苹果的这篇官方文档中有提到,@autoreleasepool 比 NSAutoreleasePool快6倍。当然,文档中也提到,ARC下不止AutoreleasePool的实现变快了,retain和release也快很多。如果你还没有在工程中使用ARC,推荐看看我的《是否应该使用ARC》。
Cheat Sheet
有一个热心者根据他的博文,制作了一张《Objective-C2.0保留字速查表》,对于新手来说,把这张速查表打印出来,对于熟悉现在的保留字还是很有用的,它的下载地址是:http://maniacdev.com/cheatsheetobjccd.pdf
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- 那些被遗漏的Objective-C保留字
- Objective-C 语法的那些事儿
- Objective C的那些锁机制
- java 那些鲜为人知的保留字
- c语言之被遗漏的角落---#pragma pack
- 【个人整理】那些也许被遗漏在角落的JS知识点(一)
- 【个人整理】那些也许被遗漏在角落的JS知识点(二)
- 【个人整理】那些也许被遗漏在角落的JS知识点(三)
- 【个人整理】那些也许被遗漏在角落的JS知识点(四)
- C语言学习中遗漏的细节
- C中容易遗漏的陷阱[updating]
- 提取.ipa和.apk文件中的图片资源
- ios 关于手机通讯录
- 关于semaphore(信号量)
- Mac上面配置tomcat
- 基于XMPP协议的聊天 详解
- 那些被遗漏的Objective-C保留字
- Xcode统计代码量
- WEB前端开发工程师的随记–黑妞HAHA
- 判断两个对象是否相等的js函数
- MFC根据进程名独立的进行音量控制——仅限于windows vista之后的版本
- 关于android Master 和 Stream 静音
- 淘宝如何跨域获取Cookie分析
- SVM学习—Improvements to Platt’s SMO Algorithm
- 《精通Linux设备驱动程序开发》——内核