自译自乐
wukongtech
这个作者很懒,什么都没留下…
展开
-
Objective-C运行时编程指南之介绍
Objective-C语言把尽可能多的决策从编译时和链接时推迟到运行时。无论什么时候,它都是动态的。这也就意味着这门语言不仅需要一个编译器而且还需要一个运行时系统来执行编译后的代码。运行时系统作为Objective-C语言的一种操作系统;正是因为这才使这门语言能够工作。这个文档关注的是NSObject类以及Objective-C程序和运行时系统是怎么相互作用的。特别地,它检查在运行时动态加载新翻译 2013-11-26 22:52:02 · 605 阅读 · 0 评论 -
objective-C运行时编程指南之代理对象
代理对象转发不但模拟多继承,而且使得开发代表或“覆盖”更多的对象的轻量级的对象成为可能。代理代替其他的对象和渠道通知它。在Objective-C编程语言“远程消息”中讨论的代理就是这样的一个代理。代理关心转发消息给远程接收者的管理的细节,确保参数的值通过连接被复制和检索等等。但是它没有尝试做其他的;它没有复制远程对象的功能只是简单地给远程对象一个本地的地址,一个可以在其他应用程序中接收消息翻译 2013-11-29 22:17:37 · 1094 阅读 · 0 评论 -
objective-C运行时编程指南之转发和多继承(续)
转发和继承尽管消息模拟继承,但NSObject类对这两个从不会迷惑。像respondsToSelector:和isKindOfClass:方法只能在继承层次中看到,不能在转发链中看到。例如,如果Warrior对象被问是否响应negotiate消息,if ( [aWarrior respondsToSelector:@selector(negotiate)] ) ...答案是N翻译 2013-11-29 22:19:36 · 1177 阅读 · 0 评论 -
objective-C运行时编程指南之转发和多继承
转发和多继承转发类似多继承,并且可以被用来为Objective-C程序提供多继承的一些影响。如图5-1所示,一个通过转发响应消息的对象似乎借或者继承了定义在其他类中的方法实现。图5-1转发在这幅图中,Warrior类的一个实例转发了一个negotiate消息给Diplomat类的一个实例。Warrior类像Diplomat类一样出现negotiate。它将看起来响应negoti翻译 2013-11-28 22:21:10 · 918 阅读 · 0 评论 -
Objective-C运行时编程指南之消息转发
消息转发给一个对象发送一个它不处理的消息是一个错误。然而,在报错之前,运行时系统会给接收对象再次处理消息的机会。转发如果你给一个对象发送了一个它没有处理的消息,在报错之前运行时会给这个对象发送一个只带一个NSInvocation对象的参数的forwardInvocation:消息——NSInvocation对象囊括了原始消息和和它一起被传递的参数。你可以实现一个forwardInv翻译 2013-11-28 22:16:34 · 953 阅读 · 0 评论 -
Objective-C运行时编程指南之动态方法决议
动态方法决议本章节描述怎么动态提供方法的实现。动态方法决议在有些情况下你可能想要动态提供方法实现。例如,Objective-C声明属性特征(参见Objective-C编程语言中的“声明属性”)包含@dynamic指令:@dynamic propertyName;这告诉编译器和这个属性相关的方法将会被动态提供。你可以实现resolveInstanceMethod: 和reso翻译 2013-11-27 21:23:40 · 1359 阅读 · 0 评论 -
objective-C运行时编程指南之消息
消息这章节讲述怎么样把消息表达式转换成objc_msgSend方法调用,并且怎么样通过名称引用方法。然后解释怎么利用objc_msgSend,并且如果必要的话,怎么避免动态绑定。objc_msgSend方法在Objective-C中,消息不必去方法实现直到运行时。编译器把一个消息表达式转换成消息方法objc_msgSend上的一次调用。这个方法需要接收者和在消息中提到方法的名称——即方翻译 2013-11-26 22:59:17 · 730 阅读 · 0 评论 -
Objective-C运行时编程指南之运行时版本和平台
运行时版本和平台:在不同的平台上有不同的Objective-C运行时版本。旧的和新的版本Objective-C运行时有两个版本——“新的”和“旧的”。新版本是和Objective-C2.0一起引入的并且包含了许多新的特性。运行时的旧版本的编程接口在Objective-C 1运行时参考中有描述;运行时的新版本的编程接口在Objective-C运行时参考中有描述。最出名的新特性是新版本翻译 2013-11-26 22:54:02 · 1060 阅读 · 0 评论 -
objective-C运行时编程指南之运行时交互
运行时交互Objective-C程序和运行时系统在三个不同层次上就行交互:通过Objective-C源代码;通过定义在Foundation框架中的NSObject类里的方法;通过直接调用运行时方法。Objective-C源代码通常情况下,运行时系统是在后台自动地进行工作的。你只是使用它来写和编译Objective-C源代码。当你编译包含Objective-C类和方法的代码的时候,编翻译 2013-11-26 22:56:22 · 731 阅读 · 0 评论 -
objective-C运行时编程指南之类型编码
类型编码为了帮助运行时系统,编译器把每个方法的返回值和参数类型编码成一个字符串并且把字符串和方法选择器联系起来。它使用的编码方案在其他环境中也是有用的并且因此使用编译指令@encode()使得编码方案变得公开可用。当指定类型说明的时候,@encode() 返回一个字符串编码类型。这种类型可以是基本数据类型如int类型,指针类型,标记的结构体或联合体,或类名——任何类型,事实上,只要这种类型可以翻译 2013-11-29 22:21:17 · 1619 阅读 · 0 评论