[转] 从 C 到 Objective C 入门1
转自: http://blog.liuhongwei.cn/iphone/objective-c/
进军iPhone开发,最大的难点之一就是怪异的Objective C语法了。不过,了解之后才发现,原来仅仅是形式上与C++、Java有差异,属于换汤不换药。如果有C语言基础,又用过C++、Java,2天之内掌握Objective C,没有问题,至少看例子程序会感觉顺眼很多。
Objective C脱胎于C语言,苹果版的开发编译环境就是大名鼎鼎的Xcode,其中的Cocoa就是Objective C库函数。
与C语言一致的部分
int main( int argc, const char *argv[] ) { printf( "hello worldn" ); return 0; }
- 数据类型,表达式,各种运算符
- 循环:for, while, do while, break, continue
- 分支:if, else, switch
类定义@interface
#import <Foundation/NSObject.h> @interface Bank: NSObject { NSString *name; int amount; } -(void) print; -(void) addAmount: (int) a; -(int) amount; -(Bank *) initWithName: (NSString *) n andAmount: (int) a; @end
- 写在Bank.h中
- #import是引入库函数
- @interface是表明定义了一个类,冒号后面是父类类型
- 两个大括号之间的部分就是类的成员变量,只有类函数能够直接访问
- - 表明要定义一个类对象级别的函数;如果是+,表明要定义类级别的函数
- 返回值与参数的类型放在()内
- 函数定义中的: 表明后面会跟一个参数
- 如果函数有多个参数,要写多个xxx:
- 类的函数定义结束后,使用@end关闭
类实现@implementation
#import "Bank.h" #import <Foundation/NSObject.h> #import <Foundation/NSString.h> @implementation Bank -(void) print { printf("Total amount is %i", amount); } -(void) addAmount: (int) a { amount += a; } -(int) amount{ return amount; } -(Bank *) initWithName: (NSString *) n andAmount: (int) a{ self = [super init]; name = n; amount = a; return self; } @end
- 写在Bank.m
- @implementation定义函数的具体内容,后面接着类名
- 函数头按照定义来写
- 最后用@end来结束所有函数体
调用写好的类和类函数
#import <Foundation/NSObject.h> #import <Foundation/NSString.h> #import "Bank.h" int main( int argc, const char *argv[] ) { //创建新对象,使用缺省初始化函数 Bank *bankDefault = [[Bank alloc] init]; //创建新对象,使用自定义初始化函数 Bank *bank = [[Bank alloc] initWithName: @"Harry" andAmount: 28]; [bank addAmount: 1]; [bank print]; [bank free]; // 释放对象 [bankDefault free]; // 释放对象 return 0; }
- 调用类函数的时候,首先创建并初始化对象。这里我们使用缺省的init和我们自定义的initWithName来分别初始化一个对象;
- 使用[]来调用函数,按照次序分别是:对象名,函数名,: 参数值(如果有),函数名第二部分(如果有),:第二参数值(如果有);
参考:
- Objective C编程,书的精简版:http://www.otierney.net/objective-c.html.zh-tw.big5
- Objective-C语法快速入门:http://www.cocoachina.com/index.php/archives/cocoachina_122.html