学前班的主要面向的是毫无IOS开发经验的同学,让大家能够快速的写出自己的第一个IOS程序。
准备工作:
1、Mac平台电脑一台
2、Xcode 4.1开发平台,一般Mac电脑都带。
第一个IOS程序
需求:实现一个3*3的棋盘,能够把玩家放置到棋盘上,还能获得某个位置上的玩家。
首先在Xcode下新建一个项目, IOS -> Application -->View-based Application
剩下的按照具体情况填写就行,如果需要使用unit test,记得勾选Unit Test。项目创建好之后整个project的目录如下:
接着,编写测试用例,上面的目录中有一个叫做<project-name>Tests的目录(如果创建项目的时候未勾选Unit Test项的话可能没有),里面有<project-name>Tests.h和<project-name>Tests.m文件。object-c语言是一种类似c++的语言,.h文件是头文件,会定义该类中需要用到的变量,需要实现的方法,而.m文件就是具体的实现类。点开.m文件,得到代码:
#import "IOSDemoTests.h"
@implementation IOSDemoTests
//'-' 表示instance method,‘+’类方法
- (void)setUp
{
//object-c中的函数调用方法,也可使用super.setUp,但是最好使用[]
[super setUp];
}
- (void)tearDown
{
// Tear-down code here.
[super tearDown];
}
- (void)testExample
{
STFail(@"Unit tests are not implemented yet in IOSDemoTests");
}
@end
这个结构和junit中很相似,接下来就把项目需要的测试添加到该文件中,作为学前班,就先不分文件写unit test了, 直接在.m文件中添加测试
- (void)testGameboard
{
//Object-c中的构造函数
Gameboard *board = [[Gameboard alloc] init];
//Object-c中的调用函数,和传参方式,使用字符串前要加@
[board movePlayer:@"playerA" row:0 col:0];
//Object-c中的assert方式
STAssertEquals([board playerAtRow:0 col:0], @"playerA",
@"playerAt... should return 'playerA'");
}
接下来实现Gameboard类,同样在.h中定义类的属性,方法,在.m中实现。
#import <Foundation/Foundation.h>
@interface Gameboard : NSObject
{
//定义类属性,NSSTring为object-c中的String类型
NSString *player_;
NSString *board_[3][3];
}
//通过property标签,为属性生成读写方法,和ruby的写法类似
@property (nonatomic,retain) NSString *player_;
//定义方法,返回值,属性等
-(void)movePlayer:(NSString *)player row:(int) row col:(int) col;
- (NSString *) playerAtRow:(int) row col:(int) col;
@end
#import "Gameboard.h"
@implementation Gameboard
//对应.h文件中的@property
@synthesize player_;
- (id)init
{
self = [super init];
return self;
}
- (void) movePlayer:(NSString *)player row:(int) row col:(int) col
{
board_[row][col] = player;
}
-(NSString *) playerAtRow:(int)row col:(int)col
{
return board_[row][col];
}
@end
实现好之后,把实现类的头文件import到测试类中
#import "Gameboard.h"
最后,跑测试,“command” + u 运行测试,得到如下 “Test Successed”的提示。 OK,下课。