博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
那些被遗漏的Objective-C保留字
阅读量:5024 次
发布时间:2019-06-12

本文共 2019 字,大约阅读时间需要 6 分钟。

Steffen Itterheim是《Learn Iphone and Ipad Cocos2d Game Development》作者。cocos2d和cocos2d-x现在已成为著名的游戏开发引擎。在AppStore上有超过100个游戏是基于Cocos2D。 Steffen Itterheim在他的博客中总结了 Object

是作者。cocos2d和cocos2d-x现在已成为著名的游戏开发引擎。在AppStore上有超过100个游戏是基于Cocos2D。

 

,并且对这些保留字做了介绍和使用示例。这些保留字如下:
@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方法并不是直接由编译器生成,而是手工生成或者运行时生成。

示例如下:
1.@implementation ClassName
2.@synthesize aProperty, bProperty;
3.@synthesize cProperty=instanceVariableName;
4.@dynamic anotherProperty;
5.
6.// method implementations
7.@end


@defs
@defs 用于返回一个Objective-C类的struct结构,这个struct与原Objective-C类具有相同的内存布局。就象你所知的那样,Objective-C类可以理解成由基本的C struct加上额外的方法构成。

示例代码如下:

1.struct { @defs( NSObject) }

 
你可能会想,什么情况下才会需要使用这个关键字。答案是涉及非常底层的操作或优化的时候才会用到。像如这篇讨论的文章中,就用到了该关键字。

 

@encode
@encode 是用于表示一个类型的字符串,对此,。

示例如下:
1.-(void) aMethod
2.{


3.    char *enc1 = @encode(int);                 // enc1 = "i"
4.    char *enc2 = @encode(id);                  // enc2 = "@"
5.    char *enc3 = @encode(@selector(aMethod));  // enc3 = ":"
6.
7.    // practical example:
8.    CGRect rect = CGRectMake(0, 0, 100, 100);
9.    NSValue *v = [NSValue value:&rect withObjCType:@encode(CGRect)];
10.}


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

示例如下:
1.@compatibility_alias AliasClassName ExistingClassName


@autoreleasepool
@autoreleasepool 是用于ARC下代替 NSAutoreleasePool的保留字,我把它写在这里,是想告诉那些以为ARC慢的同学,在中有提到, @autoreleasepool 比 NSAutoreleasePool快6倍。当然,文档中也提到,ARC下不止Autorelease Pool的实现变快了,retain和release也快很多。如果你还没有在工程中使用ARC,推荐看看我的

 

Cheat Sheet
有一个热心者根据他的博文,制作了一张对于新手来说,把这张速查表打印出来,对于熟悉现在的保留字还是很有用的,它的下载地址是:
 

转载于:https://www.cnblogs.com/zsw-1993/archive/2013/05/07/4880138.html

你可能感兴趣的文章
TFS --- GrantBackup Plan Permissions Error
查看>>
傅里叶级数与积分方程
查看>>
软工作业3:用户体验分析——以“南通大学教务管理系统微信公众号”为例
查看>>
Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
查看>>
我们前端跟后端是怎么合作的
查看>>
mysql存储过程
查看>>
洛谷P2556 [AHOI2002] 黑白图像压缩 [模拟]
查看>>
letecode [136] - Single Number
查看>>
linux下设置固定IP的方法
查看>>
VMware虚拟机下Linux系统的全屏显示
查看>>
net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-2项目搭建
查看>>
高效的jQuery
查看>>
ubuntu 16.04 (软件应用)-输入法
查看>>
windos7修复引导扇区
查看>>
Leetcode总结之Backtracking
查看>>
Android开发学习之路-图片颜色获取器开发(1)
查看>>
StackExchange.Redis 官方文档(一) Basics
查看>>
nupkg 之破解 nodejs+electron-packager 打包exe的解包
查看>>
Objective-C 使用 C++类
查看>>
浅谈之高级查询over(partition by)
查看>>