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 程序设计中文版》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值