OC的基础语法(二)
1.NSString的使用
/* 在C语言中没有专门的字符串类型 1)字符数组 char str[]="asdfasdf"; 2) 字符串指针 char *str2 = "china"; str2 = "itcast"; 在OC中有专门的字符串类型 NSString 不可变字符串类型 (char *str2 = "china";) NSMutableString 可变字符串 (char str[]="china";) NSString的使用 1)NSString 保存一个字符串 NSString *str=@"itcast"; str = @"xxxx"; //可以的 OC字符串的输出 %@ %@ 用来输出对象的 2)NSString 创建一个空字符串 NSString *str3 = [NSString new]; str3是一个空字符串 str3 = "hello"; 3)NSString 字符串的格式化 knockout_01.jpg knockout_02.jpg knockout_80.jpg NSString 字符的长度计算问题 NSString *str=@"itcast"; [str length]; 1) 全英文 2)全中文 3)中英混合 */ #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //1、用NSString 保存一个字符串 NSString *str=@"oc"; str = @"xxxxsss"; //可以的 NSLog(@"str = %@",str); //2、创建一个空字符串 NSString *str2 = [NSString new]; str2 = @"hello"; NSLog(@"str2 = %@",str2); //3、格式化字符串 // // for (int i=0; i<81; i++) { // // // NSString *str4 = [[NSString alloc] initWithFormat:@"knockout_%02d.jpg",i]; // //NSString *str3 = [NSString stringWithFormat:@"knockout_%02d.jpg",i]; // NSLog(@"str3 = %@",str4); // // } //4、字符串的长度计算(可见字符的个数) NSLog(@"len = %d",[str length]); //纯中文,NSString 作了优化,计算的就是字符的个数 //中文汉字当做一个字符 NSString *str5 = @"啦啦啦啦"; NSLog(@"%d",[str5 length]); char str6[]="ios啦啦啦啦"; NSLog(@"%d",strlen(str6)); } return 0; }
2.对象和方法之间的关系
/* 对象和方法之间的关系 1) 对象作为方法的参数使用(传递的是地址) Person *p = [Person new]; Person *p1 = [Person new]; -(void)disp:(Person *) person; [p disp:p1] 2) 返回值是对象的方法 -(Person *) changPerson:(Person *) person{ person->_name = @"胡一刀"; return person; //地址 } */ #import <Foundation/Foundation.h> @interface Person : NSObject { @public NSString *_name; int _sex; } //定义一个方法,方法的参数是一个类 类型 -(void)displayPerson:(Person *) person; //修改Person的信息 -(Person *)changePerson:(Person *)person; @end @implementation Person //定义一个方法,方法的参数是一个类 类型 -(void)displayPerson:(Person *) person{ NSLog(@"姓名:%@ 性别:%d",person->_name,person->_sex); } -(Person *)changePerson:(Person *)person{ //修改Person的姓名 person->_name = @"胡一刀"; return person; } @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建一个对象p Person *p = [Person new]; p->_name = @"张三"; p->_sex = 1; Person *p1 = [Person new]; p1->_name = @"凤姐"; p1->_sex = 0; [p displayPerson:p]; //[p changePerson:p1]; //p1的名称被改变 //创建一个对象 Person *p3 = [p changePerson:p1]; [p displayPerson:p3]; } return 0; }
3.OC中的异常处理机制
/* 异常处理机制:当我们程序遇到错误的时候,程序的处理 如果不处理,程序只会执行到出错的地方,不会向下执行 如果处理 程序可以再继续执行 @try{ //有可能出错的代码 }@catch(NSException *exception){ //表示出错以后,怎么处理 }@finally{ //不管上面的出错与否,都会执行 } */ #import <Foundation/Foundation.h> @interface Car:NSObject { int _lunzi; int _speed; } -(void)run; -(void)stop; @end @implementation Car -(void)run1{ NSLog(@"车在跑"); } -(void)stop{ NSLog(@"车已经停止"); } @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建一个车的对象 Car *car = [Car new]; @try { //存放的时有可能出错的那段代码 [car run]; //崩溃在这句话了 } @catch (NSException *exception) { //如果出错了,怎么办 NSLog(@"run 方法出错了!,错误信息为:%@",[exception name]); } @finally { NSLog(@"不管怎么样我都会打印的!"); [car stop]; } } return 0; }