Objective-C 2.0 学习笔记一(Objective-C 程序设计)

Objective-C 程序设计

 

变更履历

版本:v1.0

介绍

Objective-C 2.0 学习笔记将会是一个系列文章,主要用来记录笔者学习《Objective-C.2.0程序设计》的过程中一些心得,同时也做备忘和速查之用。从结构上来看,每一篇文章都将可能对应《Objective-C.2.0程序设计》的一个章节,当然也不排除多个篇章对应《Objective-C.2.0程序设计》一个章节的可能。

这一系列的文章随时可能更改,具体可以参见变更履历。

你需要具备的

本质上来说,学习《OC2》并不要求你具有其它语言的基础,但由于笔者本身具有多年的 Java 开发经验,所以,在一些概念上可能会引入 Java 的部分内容来解释,所以,你懂的(1年 Java 开发经验即可);同时,还需要你掌握设计模式等技能。

一台 PC 或 Mac 是必须的,但 PC 可能无法完成部分 Cocoa 程序的开发。

开发环境

Mac OS 需要你安装 Xcode 来作为开发工具;windows 下的开发可以参见《Windows 下的 Objective-C 开发环境配置简介》,具体配置这里就不累述了。

Objective-C 程序设计

“Objective-C 程序设计”是本系列的第一个篇章,主要介绍《OC2》。下面我们就切入正题,来看我们第一个 OC 程序。

// First program example

#import <Foundation/Foundation.h>

int main(int argc, const char *agrv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    NSLog(@"Programming is fun!");

    [pool drain];

    return 0;
}

常见的文件扩展名

扩展名含义扩展名含义
.cC语言源文件.mmObjective-C++源文件
.cc, .cppC++语言源文件.plPerl源文件
.h头文件.oObject(已编译的)文件
.mObjective-C源文件  

第一个程序的解释

// First program example

这是一个注释,OC 支持两种注释方式,(//)可以注释一行;(/* */) 用来对一段内容进行注释,没什么可多说的。

#import <Foundation/Foundation.h>

#import 表示将该文件的信息导入或包含到程序中来使用。Foundation.h 是一个系统文件,导入它表示我们将使用 Foundation 框架,Foundation 框架提供了大约100多个可用的头文件。作为一种简便方式,导入 Foundation.h 将自动将这100多个头文件导入。Foundation 框架在《OC2》中第十四至第十九章中讲述,我们会在后面涉及到。

int main(int argc, const char *argv[])

与大多数编程语言一样,这里定义了一个程序的主函数,参见《TODO 预留的链接》中的描述。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

这条语句作为自动释放池在内存中保留了空间。参见《TODO 预留的链接》中的描述。

NSLog(@"Programming is fun!");

这条语句我们分开来说,首先来看 @"Programming is fun!",@ 符号位于一对双引号的字符串前面,这称为常量 NSString 对象。Java 或 C 中的字符串没有前面的 @,有了这个符号就是 NSString 字符串对象。NSLog 的输入要求是一个 NSString 对象。

NSLog 是Foundation 框架提供的一个函数,它仅仅显示或记录其参数,输出格式一般如下:

2011-10-10 14:54:33.609 Fraction[6560] Programming is fun!

OC 的所有程序语句必须使用(;)结束。

[pool drain];

释放已分配的内存池。([])很有意思,我们把它留到《TODO 预留的链接》中来描述。

return 0;

终止 main 函数的执行,并返回状态值0。按照预定,0 意味着程序正常结束;任何非零值通常表示出现了一些问题。

NS 前缀

NS 是 Cocoa 框架对象类型的前缀,来源于史蒂夫.乔布斯被苹果开除那段时间建立的 NeXT。

NSString

这是一个大话题,足以开辟一个单独的篇章来描述它,所以,这里只是站位,后面会补充一篇单独描述 NSString 的文章,然后链接过去。

NSLog 的进阶使用

换行

NSLog(@"Testing...\n..1\n...2\n....3");
这里我们使用了转义符,没什么可说的。

显示变量

#import <Foundation/Foundation.h>

int main(int argc, const char *agrv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    int sum;
    sum = 50 + 25;
    
    NSLog(@"The sum 50 and 25 is %i", sum);
    
    [pool drain];
    
    return 0;
}

第一个参数中的百分号(%)是一个特殊字符,可以被 NSLog 函数识别,紧跟在百分号后的字符指定在这种情况下将要显示的值类型。只要 NSLog 函数在字符串中发现 %i 字符,它都将自动显示例程第二个参数的值。

另一个显示变量的程序

#import <Foundation/Foundation.h>

int main(int argc, const char *agrv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    int value1, value2, sum;
    
    value1 = 50;
    value2 = 25;
    sum = value1 + value2;
    
    NSLog(@"The sum %i and %i is %i", value1, value2, sum);
    
    [pool drain];
    
    return 0;
}

字符串格式说明(String Format Specifiers)

%i 用来表示整数类型,还有一些常用的格式输出字符,完整的描述参见 Apple 文档 《 String Format Specifiers》。


参考

1、String Format Specifiers

2、《Objective-C 2.0 程序设计中文版》

译者序 作者简介 技术审校人员简介 第1章 前言 1.1 本书的内容 1.2 本书的组织方式 1.3 致谢 第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 到底什么是对象 3.2 实例和方法 3.3 用于处理分数的Objective-C类 3.4 @interface部分 3.4.1 选择名称 3.4.2 实例变量 3.4.3 类和实例方法 3.5 @implementation部分 3.6 Program部分 3.7 实例变量的访问以及数据封装 3.8 小结 3.9 练习 第4章 数据类型和表达式 4.1 数据类型和常量 4.1.1 int类型 4.1.2 float类型 4.1.3 double类型 4.1.4 char类型 4.1.5 限定词:long、long long、short、unsigned及signed 4.1.6 id类型 4.2 算术表达式 4.2.1 运算符的优先级 4.2.2 整数运算和一元负号运算符 4.2.3 模运算符 4.2.4 整型值和浮点值的相互转换 4.2.5 类型转换运算符 4.3 赋值运算符 4.4 计算器类 4.5 位运算符 4.5.1 按位与运算符 4.5.2 按位或运算符 4.5.3 按位异或运算符 4.5.4 一次求反运算符 4.5.5 向左移位运算符 4.5.6 向右移位运算符 4.6 类型:_Bool、_Complex和_Imaginary 4.7 练习 第5章 循环结构 5.1 for语句 5.1.1 键盘输入 5.1.2 嵌套的for循环 5.1.3 for循环的变形 5.2 while语句 5.3 do语句 5.4 break语句 5.5 continue语句 5.6 小结 5.7 练习 第6章 选择结构 6.1 if语句 6.1.1 if-else结构 6.1.2 复合条件测试 6.1.3 嵌套的if语句 6.1.4 else if结构 6.2 switch语句 6.3 Boolean变量 6.4 条件运算符 6.5 练习 第7章 类 7.1 分离接口和实现文件 7.2 合成存取器方法 7.3 使用点运算符访问属性 7.4 具有多个参数的方法 7.4.1 不带参数名的方法 7.4.2 关于分数的操作 7.5 局部变量 7.5.1 方法的参数 7.5.2 static关键字 7.6 self关键字 7.7 在方法中分配和返回对象 7.8 练习.. 第8章 继承 8.1 一切从根类开始 8.2 通过继承扩展—添加新方法 8.2.1 Point类和内存分配 8.2.2 @class指令 8.2.3 具有对象的类 8.3 重载方法 8.3.1 择哪个方法 8.3.2 重载dealloc方法和关键字super 8.4 通过继承扩展:添加新的实例变量 8.5 抽象类 8.6 练习 第9章 多态、动态类型和动态绑定 9.1 多态:相同的名称,不同的类 9.2 动态绑定和id类型 9.3 编译时和运行时检查 9.4 id数据类型与静态类型 9.5 有关类的问题 9.6 使用@try处理异常 9.7 练习 第10章 变量和数据类型 10.1 类的初始化 10.2 作用域回顾 10.2.1 控制实例变量作用域的指令 10.2.2 外部变量 10.2.3 静态变量 10.3 存储类说明符 10.3.1 auto 10.3.2 const 10.3.3 volatile 10.4 枚举数据类型 10.5 typedef语句 10.6 数据类型转换 10.6.1 转换规则 10.6.2 符号扩展 10.7 练习 第11章 分类和协议 11.1 分类 11.2 协议 11.3 合成对象 11.4 练习 第12章 预处理程序 12.1 #define语句 12.1.1 更高级的定义类型 12.1.2 #运算符 12.1.3 ##运算符 12.2 #import语句 12.3 条件编译 12.3.1 #ifdef、#endif、#else和#ifndef语句 12.3.2 #if和#elif预处理程序语句 12.3.3 #undef语句 12.4 练习 第13章 基本的C语言特性 13.1 数组 13.1.1 数组元素的初始化 13.1.2 字符数组 13.1.3 多维数组 13.2 函数 13.2.1 参数和局部变量 13.2.2 函数的返回结果 13.2.3 函数、方法和数组 13.3 结构 13.3.1 结构的初始化 13.3.2 结构数组 13.3.3 结构中的结构 13.3.4 关于结构的补充细节 13.3.5 不要忘记面向对象编程思想 13.4 指针 13.4.1 指针和结构 13.4.2 指针、方法和函数 13.4.3 指针和数组 13.4.4 指针运算 13.4.5 指针和内存地址 13.5 联合 13.6 它们不是对象 13.7 其他语言特性 13.7.1 Compound Literal 13.7.2 goto语句 13.7.3 空语句 13.7.4 逗号运算符 13.7.5 sizeof运算符 13.7.6 命令行参数 13.8 工作原理 事实#1:实例变量存储在结构中 事实#2:对象变量实际上是指针 事实#3:方法是函数,而消息表达式是 函数调用 事实#4:id类型是通用指针类型 13.9 练习 第二部分 Foundation框架 第14章 Foundation框架简介 第15章 数字、字符串和集合 15.1 数字对象 15.2 字符串对象 15.2.1 NSLog函数 15.2.2 可变对象与不可变对象 15.2.3 可变字符串 15.2.4 所有对象到哪里去了 15.3 数组对象 15.4 同步AddressCard方法 15.4.1 快速枚举 15.4.2 数组排序 15.5 词典对象 15.6 集合对象 15.7 练习 第16章 使用文件 16.1 管理文件和目录:NSFileManager 16.1.1 使用NSData类 16.1.2 使用目录 16.1.3 枚举目录中的内容 16.2 使用路径:NSPathUtilities.h 16.2.1 常用的路径处理方法 16.2.2 复制文件和使用NSProcessInfo类 16.3 基本的文件操作:NSFileHandle 16.4 练习 第17章 内存管理 17.1 自动释放池 17.2 引用计数 17.2.1 引用计数和字符串 17.2.2 引用计数与实例变量 17.3 自动释放池示例 17.4 内存管理规则摘要 17.5 垃圾回收 17.6 练习 第18章 复制对象 18.1 copy和mutableCopy方法 18.2 浅复制与深复制 18.3 实现协议 18.4 用赋值方法和取值方法复制对象 18.5 练习 第19章 归档 19.1 使用XML属性列表进行归档 19.2 使用NSKeyedArchiver归档 19.3 编码方法和解码方法 19.4 使用NSData创建自定义档案 19.5 使用归档程序复制对象 19.6 练习 第三部分 Cocoa和iPhone SDK 第20章 Cocoa简介 20.1 框架层 20.2 接触Cocoa 第21章 编写iPhone应用程序 21.1 iPhone SDK 21.2 第一个iPhone应用程序 21.2.1 创建新的iPhone应用程序项目 21.2.2 输入代码 21.2.3 设计界面 21.3 iPhone分数计算器 21.3.1 启动新的Fraction_Calculator项目 21.3.2 定义视图控制器 21.3.3 Fraction类 21.3.4 处理分数的Calculator类 21.3.5 设计UI 21.4 小结 21.5 练习 第四部分 附录 附录A 术语表 附录B Objective-C 2.0语言概览 附录C 地址簿源代码 附录D 资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值