没有合适的资源?快使用搜索试试~ 我知道了~
Objective-C 入门教程 分类 编程技术 Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向对象编程。 Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一。 如果你以前使用过其他面向对象编程语言,那么下面的信息可以帮助你学习 Objective-C 的基本语法。许多传统的面向对象概念,例如封装,继承以及多态,在 Objective-C 中都有所体现。这里有一些重要的不同,但是这些不同在这文章会表现出来,而且如果你需要还有更多详细的信息存在。 如果你从来没有使用任何编程语言编过程序,那么你至少需要在开始之前,对相关概念进行一些基础的了解。对象的使用和对象对象架构是 iPhone 程序设计的基础,理解他们如何交互对创建你的程序非常重要。想了解面向对象概念的,请参看使用 Objective-C 进行面向对象编程。 Objective-C:C的超集 Objective-Objective-C是C语言的
资源推荐
资源详情
资源评论
Objective-C 入门教程
分类 编程技术
Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向
对象编程。
Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以
提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类
的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一。
如果你以前使用过其他面向对象编程语言,那么下面的信息可以帮助
你学习 Objective-C 的基本语法。许多传统的面向对象概念,例如封
装,继承以及多态,在 Objective-C 中都有所体现。这里有一些重要
的不同,但是这些不同在这文章会表现出来,而且如果你需要还有更
多详细的信息存在。
如果你从来没有使用任何编程语言编过程序,那么你至少需要在开始
之前,对相关概念进行一些基础的了解。对象的使用和对象对象架构
是 iPhone 程序设计的基础,理解他们如何交互对创建你的程序非常
重要。想了解面向对象概念的,请参看使用 Objective-C 进行面向对
象编程。
Objective-C:C 的超集
Objective-Objective-C 是 C 语言的严格超集--任何 C 语言程序不经
修改就可以直接通过 Objective-C 编译器,在 Objective-C 中使用 C 语
言代码也是完全合法的。Objective-C 被描述为盖在 C 语言上的薄薄
一层,因为 Objective-C 的原意就是在 C 语言主体上加入面向对象的
特性。
Objective-C 代码的文件扩展名
扩展
名
内容类型
.h
头文件。头文件包含类,类型,函数和常数的声明。
.m
源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。
.mm
源代码文件。带有这种扩展名的源代码文件,除了可以包含 Objective-C 和 C 代码以外还可以包含 C++代码。仅在你的 Objective-C
代码中确实需要使用 C++类或者特性的时候才用这种扩展名。
当你需要在源代码中包含头文件的时候,你可以使用标准的 #include
编译选项,但是 Objective-C 提供了更好的方法。#import 选项和 #i
nclude 选项完全相同,只是它可以确保相同的文件只会被包含一次。
Objective-C 的例子和文档都倾向于使用 #import,你的代码也应该是
这样的。
语法
Objective-C 的面向对象语法源于 Smalltalk 消息传递风格。所有其他
非面向对象的语法,包括变量类型,预处理器(preprocessing),流
程控制,函数声明与调用皆与 C 语言完全一致。但有些 C 语言语法
合法代码在 objective-c 中表达的意思不一定相同,比如某些布尔表达
式,在 C 语言中返回值为 true,但在 Objective-C 若与 yes 直接相比
较,函数将会出错,因为在 Objective-C 中 yes 的值只表示为 1。
第一个 Objective-C 程序,基于 Xcode 4.3.1:
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSLog(@"Hello World!");
}
return 0;}
消息传递
Objective-C 最大的特色是承自 Smalltalk 的消息传递模型(message
passing),此机制与今日 C++式之主流风格差异甚大。Objective-C
里,与其说对象互相调用方法,不如说对象之间互相传递消息更为精
确。此二种风格的主要差异在于调用方法/消息传递这个动作。C++
里类别与方法的关系严格清楚,一个方法必定属于一个类别,而且在
编译时(compile time)就已经紧密绑定,不可能调用一个不存在类
别里的方法。但在 Objective-C,类别与消息的关系比较松散,调用
方法视为对对象发送消息,所有方法都被视为对消息的回应。所有消
息处理直到运行时(runtime)才会动态决定,并交由类别自行决定如
何处理收到的消息。也就是说,一个类别不保证一定会回应收到的消
息,如果类别收到了一个无法处理的消息,程序只会抛出异常,不会
出错或崩溃。
C++里,送一个消息给对象(或者说调用一个方法)的语法如下:
obj.method(argument);
Objective-C 则写成:
[obj method: argument];
此二者并不仅仅是语法上的差异,还有基本行为上的不同。
这里以一个汽车类(car class)的简单例子来解释 Objective-C 的消
息传递特性:
[car fly];
典型的 C++意义解读是"调用 car 类别的 fly 方法"。若 car 类别里头没
有定义 fly 方法,那编译肯定不会通过。但是 Objective-C 里,我们应
当解读为"发提交一个 fly 的消息给 car 对象",fly 是消息,而 car 是消
息的接收者。car 收到消息后会决定如何回应这个消息,若 car 类别
内定义有 fly 方法就运行方法内之代码,若 car 内不存在 fly 方法,则
程序依旧可以通过编译,运行期则抛出异常。
此二种风格各有优劣。C++强制要求所有的方法都必须有对应的动作,
且编译期绑定使得函数调用非常快速。缺点是仅能借由 virtual 关键字
提供有限的动态绑定能力。Objective-C 天生即具备鸭子类型之动态
绑定能力,因为运行期才处理消息,允许发送未知消息给对象。可以
送消息给整个对象集合而不需要一一检查每个对象的类型,也具备消
息转送机制。同时空对象 nil 接受消息后默认为不做事,所以送消息
给 nil 也不用担心程序崩溃。
字符串
作为 C 语言的超集,Objective-C 支持 C 语言字符串方面的约定。
也就是说,单个字符被单引号包括,字符串被双引号包括。然而,大
多数 Objective-C 通常不使用 C 语言风格的字符串。反之,大多数框
架把字符串传递给 NSString 对象。NSString 类提供了字符串的类包装,
包含了所有你期望的优点,包括对保存任意长度字符串的内建内存管
理机制,支持 Unicode,printf 风格的格式化工具,等等。因为这种字
符串使用的非常频繁,Objective-C 提供了一个助记符可以方便地从
常量值创建 NSString 对象。要使用这个助记符,你需要做的全部事
情,是在普通的双引号字符串前放置一个@符号,如下面的例子所示:
NSString* myString = @"My String\n";NSString*
anotherString = [NSString stringWithFormat:@"%d %s",
1, @"String"];
// 从一个 C 语言字符串创建 Objective-C 字符串 NSString*
fromCString = [NSString stringWithCString:"A C
string"
encoding:NSASCIIStringEncoding];
剩余28页未读,继续阅读
资源评论
xiaoshun007~
- 粉丝: 3777
- 资源: 3146
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功