您的位置:首页 > 移动开发 > Objective-C

objective C程序 NSString用法和类的概念

2015-08-01 21:10 423 查看
#import <Foundation/Foundation.h>

int main(int argc,
const char * argv[]) {

    @autoreleasepool {

       //NSString是oc中字符串处理的类

        //1,创建一个字符串
        NSString *s =
@"welcome to itcast";//特殊用法

        //2,输出一个字符串
        NSLog(@"%@",s);

        //NSString是一个类
        NSString*s1 =[NSString new];
        s1 =@"jian le ma";
        NSLog(@"%@",s1);

      //3,创建字符串的第三种用法

        

        //格式化创建字符串(按照指定的格式创建字符串)

        //NSString *imgName = [NSString stringWithFormat:@"xxxxxxxxxx%02d.jpg",i];

        /*for (int i =0; i<10; i++)

        {

           NSString *imgName = [NSString stringWithFormat:@"xxxxxxxxxx%02d.jpg",i];

            NSLog(@"%@",imgName);

        }*/

        //用一个已经存在的字符串创建一个新的字符串
        NSString *s2 = [[NSString alloc] initWithString :s1 ];
        NSLog(@"s2 = %@",s2);
    }
   
return 0;
}

#import <Foundation/Foundation.h>

int main(int argc,
const char * argv[]) {

    @autoreleasepool {

       //计算NSString字符串的长度

        //1)字符串是纯英文的
        NSString *s1 =@"i donot care";
        NSUInteger len = [s1 length];
        NSLog(@"len = %ld",len);//12

        //不包含‘\0’

        

 
4000
      // 2)字符串是纯中文

        //oc字符串中中英文都是一个字符串
        NSString *s2 =@"我不关心";//4
        len = [s2 length];

        

        //3)中英文混合
        NSString *s3 =@"班长!abc";//6
        len = [s3 length];
        NSLog(@"len = %ld",len);

        

        //在C语言UTF-8编码中一个汉字占三个字节
       
char *s ="我不关心";

       // char *s ="abc";

      //int len1 =strlen(s);
        printf("len = %ld",strlen(s));//3    //12
    }
   
return 0;
}

类方法:

 +开头的方法(定义的过程和对象方法一致,只不过+开头)

 类方法的调用:

 [类名
方法名];

 

 对比学习:

 Dog类

 -(void)run;

 想调用run方法,dog * dog = [Dog new];   [dog run];

 

 Dog类r

 +(void)run;类方法

 想调用run方法,  [Dog run];

 
#import
<Foundation/Foundation.h>

@interface Car : NSObject
{

    @public
   
int _speed;
}
-(void)run;
+(void)run;
+(void)run:(int)speed;

@end

@implementation Car
-(void)run{

    //对象方法中可以调用其他的对象方法

    //1)当前对象方法中创建对象(可以是当前类的也可以是其他类的对象),使用新创建的对象调用对象方法

    //2)可以使用self

    //3)对象可以作为方法的参数传递过来,可以使用传递过来的对象调用方法
    NSLog(@"车正在以%d码的速度跑",_speed);
}
+(void)run{

    //在类方法中不允许访问实例变量

 //NSLog(@"车正在以%d码的速度跑",_speed);
    NSLog(@"车正在跑");

//在类方法中可以调用其他方法

    //1)可以直接使用本类类名(其他类名)调用
    [Car run:250];

    //2)可以使用self
    [self run:100];
}
+(void)run:(int)speed{
   NSLog(@"车正在以%d码的速度跑",speed);
}

@end

int main(int argc,
const char * argv[]) {

    @autoreleasepool {
        Car * car = [Car new];
        car->_speed=200;
        [car run];

        
        [Car run];//类方法
        [Car run:230];
    }
   
return 0;
}

int main(int argc,
const char * argv[]) {

    @autoreleasepool {

        

        
       
//创建对象
        Car *car1 = [Car new];
        car1->_speed = 100;
        [car1 start];

        //[Car new] 
实质上是对象的存储空间

        //匿名类(匿名对象)时候用

        

        //匿名类的第一种使用方法

        //1,使用匿名类访问实例变量
(能,但只能正确访问一次)

        //以后再访问,实际上是访问新的空间了
        [Car new]->_speed = 250;
        NSLog(@"_speed = %d",[Car new]->_speed = 250);//0

        

        //2,使用匿名的类,可以调用方法
        [[Car new] stop];  
//可以

        
        [[Car alloc] init]; 
//等价于[Car new];

        //使用alloc init的方式调用stop方法
        [[[Car alloc] init] stop];
    }
   
return 0;
}

  
        Person *p = [[Person alloc] init];
       
//创建一个车
        Car *car = [Car new];
        car->_speed = 80;

        
        [p goHome:car];

        //1,匿名类作为方法的参数使用
        [p goHome:[Car new]];

        //匿名类调用方法,参数又是匿名类
        [[Person new] goHome:[Car new]];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: