Objective-C Runtime 文档翻译(一)—Runtime版本和平台

前言

?

在不同的平台,有不同版本的OC runtime。

?

旧的和现在的版本

?

有两个版本的OC runtime——“旧版”和“现在版”。现在版就是OC-2.0并包含了许多新特性。旧版本的runtime的编程接口就是OC-1;现在版本的runtime全部接口参见Objective-C Runtime Reference
最值得注意的新特性是,现在版本的实例变量是“不脆弱的”:

  • 在旧版本runtime,如果我们改变一个类的实例变量的布局,我们必须重新编译所有继承自它的类。
  • 在现在版本runtime,如果我们改变一个类的实例变量的布局,我们不需要重新编译所有继承自它的类。

另外,现在版本的runtime支持为声明的属性做实例变量的synthesis(参见Objective-C Programming Language)。

?

平台

?

iPhone应用和OSX 10.5版本的64-位编程使用现在版本的runtime。

原文地址:https://www.cnblogs.com/zhouyubo/p/8434338.html

时间: 2024-11-09 02:39:29

Objective-C Runtime 文档翻译(一)—Runtime版本和平台的相关文章

Objective C运行时(runtime)

#import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------UNSELECT BY INVOKE."); } // Then these two lines: Class __class = NSClassFromString(@"WebActionDisablingCALayerDelegate"); class_addMethod(_

Target runtime com.genuitec.runtime.generic.jee60 is not defined

转载自:http://jingyan.baidu.com/article/d7130635338e3f13fdf47518.html 用eclipse加载别人的工程,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined 系统加载工程后,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined,在发布工程的同事电脑上正常 新导入的工程,出问题很

用eclipse加载别人的工程,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined

系统加载工程后,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined,在发布工程的同事电脑上正常 新导入的工程,出问题很大可能是jdk的版本问题导致,检查一下,发现jdk果然不一致,修改了jdk版本,但异常没有消除 网上查询下解决方案,原来在工程目录下的settings,有个文件也需要修改下 打开该文件,会发现<runtime name="com.genuitec.runtime.generic.jee60&q

《Objective-C Runtime分析(一)-Runtime初步》

http://www.tekuba.net/program/335/ 本系列主要参考资料:Objective-C Runtime ReferenceObjective-C Runtime Programming Guide涉及主要文件:objc/message.h,objc/objc-api.h,objc/objc.h,objc/runtime.h特酷吧[tekuba.net]采用"署名-非商业用途-保持一致"的创作共用协议,使用本文内容请遵循该协议 Objective-C Runti

DescriptionResourcePathLocationType Target runtime com.genuitec.runtime.generic.jee60 is not defined.project2UnknownFace 解决方案

[1]import导入以前的项目,项目上有一个红叉,其他的地方没有错误,但不影响操作. 报错信息:Description Resource Path Location Type Target runtime com.genuitec.runtime.generic.jee60 is not defined. project2 Unknown Faceted Project Problem 解决办法: 在本地找到工程目录下的.settings下的org.eclipse.wst.common.pro

Target runtime com.genuitec.runtime.generic.jee50 is not defined工程错误

导入别人的工程,发现报错Target runtime com.genuitec.runtime.generic.jee50 is not defined 解决方法:1. 找到工程目录的.settings2. 找到org.eclisep.wst.common.project.facet.core.xml文件 3. 打开该文件,会发现<runtime name="com.genuitec.runtime.generic.jee60" />,把这句话去掉4. 刷新工程就行了 原文

Objective C运行时(runtime)技术总结

Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相关的几个要点做了一个小结. (1)在运行时对函数进行动态替换 : class_replaceMethod 使用该函数可以在运行时动态替换某个类的函数实现,这样做有什么用呢?最起码,可以实现类似windows上hook效果,即截获系统类的某个实例函数,然后塞一些自己的东西进去,比如打个log什么的. 示例代码: IMP org

Objective C运行时(runtime)技术总结,好强大的runtime

前言:          Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相关的几个要点做了一个小结. 目录: (1)使用class_replaceMethod/class_addMethod函数在运行时对函数进行动态替换或增加新函数 (2)重载forwardingTargetForSelector,将无法处理的selector转发给其他对象 (3)重载resolveIns

Objective-C Runtime 文档翻译—序言

前言 ? Objective-C语言尽可能多的将许多决定从编译连接推迟到运行时.无论何时,它都尽可能的动态处理事件.这就意味着OC语言不仅仅需要编译器,还需要一个运行时系统来执行编译完成的代码.对于OC而言,运行时系统扮演了操作系统的角色:就是它使得OC运行起来. 这个文档涉及到NSObject类和Objective-C程序如何与运行时系统互相作用.尤其是,对于动态加载新的类和向其他对象转发消息,本文档可用于检索编程示例.我们也可以从本文档查到在程序运行时,关于如何查找到对象相关的信息. 我们应