在objective-c中定义两个类,用于测试对象的定义操作。
首先定义两个类Vehicle和Ship。
@interface Vehicle
- (void)move;
@end
@interface Ship : Vehicle
- (void)shoot;
@end
对象定义操作的方法会有很多,下面罗列一些典型的操作方法。如下所示:
Ship *s = [[Ship alloc] init];
[s shoot];
编译器不会报警,因为向s对象发送消息shoot,其类可以使用shoot方法处理这个消息;
[s move];
编译器不会报警,因为向s对象发送消息move,可以上溯到Ship类的父类Vehicle,使用父类的方法move处理这个消息。这是面向对象开发的继承特性的完美体现。
在编译器编译和运行时执行代码过程中,都不会有任何问题出现。
Vehicle *v = s;
编译器不会报警,因为向s对象所属类的父类就是Vehicle。
[v shoot];
编译器这时会报警,但运行时不会崩溃。因为编译器仅仅知道它是一个Vehicle,而不知道它其实是一个Ship,但是我们自己知道,所以可以这么用。
id obj = ...;
[obj shoot];
编译器不会报警,因为它知道这个shoot方法是存在于整个项目中的。但在运行时,它可能会失败,因为obj不一定是Ship类的对象,虽然它在编译时可能是。
[obj someMethodNameThatNoObjectAnywhereRespondsTo];
编译器会报警了,因为它不知道这个名称如此乱七八糟的方法。因此,运行时也会失败,根本没有对象有这个方法来响应这个消息。
NSString *hello = @”hello”;
[hello shoot];
编译器会报警了,因为它知道NSString没有这个shoot方法。因此,运行时也会失败。
Ship *helloShip = (Ship *)hello;
编译器不会报警。
以上是学习objective-c的一些笔记。
分享到:
相关推荐
3. Objective-C中的布尔类型 4. Objective-C中的null 5. 与C混合编写 6. 对象的初始化 7. Objective-C的description方法 8. Objective-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category ...
第1部分 Objective-C语言 第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 ...
Objective-C Objective-C Objective-C Objective-C 培训教程 主要章节提示: 第 一 章 程序整体语法结构 第 二 章 数据类型 第 三 章 字符串 第 四 章 内存管理 第 五 章 对象的初始化 第 六 章 存取器 第 七 章 ...
作为C语言的超集,面向对象成为Objective-C与C语言的最大区别,因此,对象是Objective-C中最重要的部分之一。目前面向对象的语言有很多,Objective-C中的对象又和其他语言中的对象有什么区别呢?下面来简单介绍...
Google Objective-C Style Guide 中文版 目录 例子 空格与格式 空格与制表符 行宽 方法声明与定义 方法调用 @public与@private 异常 协议 命名 文件名 Objective-C++ 类名 分类名 Objective-C方法名 变量名 注释 ...
Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一。 如果你以前使用过...
1. Objective-C概述,介绍了Objective-C的来源、发展历史和作为面向对象的C语言的特点。 2. 第一个OC程序,讲解了如何创建一个OC项目,解释了一些OC程序中的关键字和语法。 3. OC基础语法,对比了OC和C语言的一些区别...
喜欢读一些开源项目源码的人,总是会发现,大神的代码中总是有那么...根据名字也可以理解到,对象宏就是用来定义一个量,通过这个宏可以拿到这个变量,比如我们定义一个π值: #define PI 3.1415926在这里如果用到π值时
第 1 章,也就是本章 ...第 3 章,类的声明和定义 第 4 章,继承 第 5 章,Class 类型,选择器 Selector 以及函数指针 第 6 章,NSObject 的奥秘 第 7 章,对象的初始化以及实例变量的作用域 第 8 章,类方法以及私有方法
Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一。 如果你以前使用过...
Objective-C是一种简单的...Objective-C通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI C语言。类的语法和设计主要是基于Smalltalk,最早的面向对象编程语言之一。
PSA(位置太阳算法)-Objective-C 该算法应该适用于 -2000 到 6000 ,不确定性为 +/-0.0003 度。 如何使用它? PSAOCHeader.h考虑到您已将库添加到项目中,并且标头已正确定义,您必须导入文件。 使用PSAOCSPA...
关于CeedGL CeedGL是一个将OpenGL对象封装到Objective-C对象中的库。 它不是试图强制编码风格或定义特定的场景图,而是旨在使其更易于使用Objective-C的OpenGL。 现代OpenGL(ES 2.0,Desktop 3.0)定义了许多“对象...
我注意到您提到的是 Objective-C 语言,这是一种主要用于 macOS 和 iOS 开发的编程语言。下面是一个简要的 Objective-C 语言教程和一个基本的案例。 ### Objective-C 语言教程: #### 1. Hello World 程序 ```...
当参数在桥的 Objective-C 和 JavaScript 端之间传递时,它们可能被隐式转换为适当的类型对应物或装箱在不透明的代理对象中。 在桥的每一侧之间移动时,以下类型约定有效: Objective-C 到 JavaScr
Rust 的 Objective-C 运行时包装器。 objc-rs提供: libobj运行时 API 的低级ffi包装器 libobj的包装器 基本NSObject类的包装器 用法 将这些定义添加到您的Cargo.toml : [ dependencies . i686-apple-darwin . ...
Objective-C是一种面向对象的编程语言,它继承自C语言并增加了面向对象编程的特性。你需要定义类、创建对象、实现方法等。同时,你还需要熟悉Objective-C的语法和特性,如内存管理、协议和代理等。 构建和编译:...
4.2 Objective-C中类的定义 25 4.3 实例变量、实例方法、类方法 26 4.4 类的实例化及方法的调用 27 4.5 类的初始化 29 4.6 属性 30 第5章 Objective-C中的数据类型 32 5.1 整型 32 5.2 浮点类型 33 5.3 字符型(char...