首页 > 技术文章 > OC的基础语法(二)

iosnds 2015-10-16 08:40 原文

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;
}

 

  

推荐阅读