Objective-C运行时编程指南之运行时版本和平台

运行时版本和平台:

在不同的平台上有不同的Objective-C运行时版本。

旧的和新的版本

Objective-C运行时有两个版本——“新的”和“旧的”。新版本是和Objective-C2.0一起引入的并且包含了许多新的特性。运行时的旧版本的编程接口在Objective-C 1运行时参考中有描述;运行时的新版本的编程接口在Objective-C运行时参考中有描述。

最出名的新特性是新版本运行时中的实例变量是“强类型”:

1.在旧版本的运行时中,如果你改变了一个类中的实例变量的设计,那么你必须重新编译那些继承它的类。

2.在新版本的运行时中,如果你改变了一个类中的实例变量的设计,那么你就不必再重新编译那些继承它的类。

此外,新版本的运行时支持实例变量合成声明的属性。

平台

iPhone应用程序和在OS X v10.5以后上的64位的程序使用的都是新版本的运行时。

其他程序(在OS X桌面上32位的程序)使用的是旧版本的运行时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009年08月 地区: 大陆 语言: 简体中文 简介: 内容简介 Objective-C是扩展C的面向对象编程语言,也是iPhone开发用到的主要语言。本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。附录中还介绍了如何从其他语言过渡到Objective-C。   本书适合各类开发人员阅读。 内容截图 目录: 第1章 启程.1 1.1 预备知识1 1.2 历史背景1 1.3 内容简介2 1.4 小结3 第2章 对C的扩展4 2.1 最简单的Objective-C程序4 2.2 解构HelloObjective-C程序7 2.2.1 #import7 2.2.2 NSLog()和@"字符串"8 2.3 布尔类型10 2.3.1 BOOL强大的实用功能11 2.3.2 比较13 2.4 小结14 第3章 面向对象编程基础知识15 3.1 间接15 3.1.1 变量与间接16 3.1.2 使用文件名的间接18 3.2 在面向对象的编程中使用间接24 3.2.1 过程式编程24 3.2.2 实现面向对象编程29 3.3 学习有关的术语33 3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 3.4.4 扩展Shapes-Object41 3.5 小结43 第4章 继承45 4.1 为何使用继承45 4.2 继承语法48 4.3 继承的工作机制51 4.3.1 方法调度51 4.3.2 实例变量53 4.4 重写方法55 4.5 小结57 第5章 复合58 5.1 什么是复合58 5.1.1 Car程序58 5.1.2 自定义NSLog()59 5.2 存取方法62 5.2.1 设置发动机的属性64 5.2.2 设置轮胎的属性64 5.2.3 跟踪汽车的变化66 5.3 扩展CarParts程序67 5.4 复合还是继承68 5.5 小结69 第6章 源文件组织70 6.1 拆分接口和实现部分70 6.2 拆分Car程序73 6.3 使用跨文件依赖关系75 6.3.1 重新编译须知75 6.3.2 让汽车开动77 6.3.3 导入和继承79 6.4 小结80 第7章 深入了解Xcode82
Objective-C中,可以通过运行时库提供的方法来获取函数名。常用的方法有以下几种: 1. 使用SEL获取函数名 在Objective-C中,每个方法都对应一个SEL类型的唯一标识符,可以通过这个标识符来获取方法名。具体实现方式如下: ```objective-c - (void)testMethod { SEL sel = @selector(testMethod); const char *methodName = sel_getName(sel); NSLog(@"方法名为:%s", methodName); } ``` 2. 使用NSMethodSignature获取函数名 NSMethodSignature是一个类,用于表示方法的参数类型和返回值类型。可以通过它的方法获取方法的名称。具体实现方式如下: ```objective-c - (void)testMethod { NSMethodSignature *signature = [self methodSignatureForSelector:_cmd]; const char *methodName = [signature name]; NSLog(@"方法名为:%s", methodName); } ``` 3. 使用class_copyMethodList获取函数名 class_copyMethodList是一个函数,用于获取一个类的所有方法。可以通过遍历方法列表来获取对应的方法名。具体实现方式如下: ```objective-c - (void)testMethod { unsigned int methodCount = 0; Method *methodList = class_copyMethodList([self class], &methodCount); for (int i = 0; i < methodCount; i++) { Method method = methodList[i]; const char *methodName = sel_getName(method_getName(method)); NSLog(@"方法名为:%s", methodName); } free(methodList); } ``` 需要注意的是,这种方式只能获取当前类的方法名,无法获取父类的方法名。如果需要获取父类的方法名,可以使用class_copyMethodList函数遍历父类的方法列表。 以上是Objective-C中通过运行时方法获得函数名的常用方法,还有其他一些方法,具体可以查看Objective-C运行时库提供的API文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值