最近休息在家,闲来无事想搞一个iphone的游戏玩玩,于是买了本 图灵 的 Object-C基础教程 看了看,这本书还算比较基础,里面讲解知识点也比较通俗易懂,尤其是做过一些开发的人,基本上没有什么太大的难点。
真正开始接触 Object-C 跟以前的感受还真是大不相同,以前没怎么接触过Object-C 感觉语法很奇怪,而且由于最开始对Object-C 了解也不多,所以感觉为了一个应用去新学一门语言,而且还是在 apple 系列里的语言有些浪费时间不值得,如今真正去接触了解了后才明白,其实Object-C 是对C的一个扩展而已,里面对C填入了一些新的特性,其实大部分东西跟C还是一样的,本人虽然一直从事web开发,可是却对C是情有独钟,这会有时间用Object-C 写个小游戏其实对C也会有一定程度上的提高。
今天对Object-C 一些语法上的东西做个简单的笔记,方便查询,随时完善更新。
1.Hello World!
所有的语言都是如此,第一个例子基本都是永恒不变的hello world
Object-C里的Hello World其实跟C的Hello World基本上是一样的
import的作用和C中的include的作用基本一样,都说加载一个头文件到当前的代码中,然而Object-C 的 import 加载文件的时候,同一个头文件只会加载一次,这样就不必像C中一样需要用#ifdef 一个 宏来决定是否加载头文件。
Foundation/Foundation.h 这个文件是Cocoa下的 Foundation框架的主头文件,导入这个文件后就可以使用这个框架的很多特性,Foundation框架主要处理的是用户界面层下的一些东西,比如数据通信,功能实现,以及一些数据结构算法的实现等。
NSLog 这个函数和c的printf 基本相同,只不过在printf的基础上增加了一些新的东西,比如自动在结束的时候增加\n换行符,增加了时间戳日期戳等。
NSLog 参数中字符串前面的 @符号表示这个字符串是 Object-C 风格的字符串 数据类型为 NSString 而非C风格的字符串。
2.BOOL布尔类型
Object-C中加入了布尔类型,C中一般表示布尔类型都是 用 0 和 1去表示,而Object-C中的布尔类型 使用 YES 和 NO 两个值来表示的,YES 和 NO其实是一对 signed char类型的数值,类似于 typedef signed charBOOL的定义。
3.类的定义
由于面向对象的思想是部分语言的,所以这里我只标记语法,而不对面向对象做过多的解释和评论。
Object-C的类的定义分为两部分,一部分是接口@interface 部分,另外一部分是 实现@implementation 部分,接口部分个人感觉跟C的头文件的作用类似,主要定义了一些类的成员和方法的原型,而 实现 部分则是对这些接口中声明的具体实现。
#import <Foundation/Foundation.h>
@interface Hero : NSObject
{
NSString *iName;
int iHP;
}
- (void) setName:(NSString*) NAME;
- (void) setHP:(int) HP;
- (void) getInfo;
@end
@implementation Hero
- (void) setName:(NSString*) name
{
iName = name;
}
- (void) setHP:(int) HP
{
iHP = HP;
}
- (void) getInfo
{
NSLog(@"PLAYER: %@ HP:%d", iName, iHP);
}
@end
@interface 的格式为
类的实例化以及调用
方法多个参数的声明和调用方法都很怪
- (void) setStyle:(int) font
setColor:(int) RGB;
[obj setStyle:SONGTI
setColor:REDCOLOR]
方法的调用必须指明参数的名称,第一个参数的名称为方法名,其余为声明时候所制定的名称。
http://my.oschina.net/fuckphp/blog/92993