2013-07-12 OC常用数据类型

来源:互联网 发布:简单的化工制图软件 编辑:程序博客网 时间:2024/06/03 17:00
 
面试考点

//不可变字符串也能添加新的字符,只不过它已经产生了一个新的字符串对象,跟原来的那个已经没有关系了


//可变字符串 NSMutableString

//可变和不可变的区别
//可变的操作的是始终是同一块内存,不可变操作的不是同一块内存,他会产生不同内存  


可变字符串是不可变字符串的子类,同时它扩充了自己的新的方法
 

字符串:

    self.window = [[[UIWindow allocinitWithFrame:[[UIScreen mainScreenbounds]] autorelease];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

  

    //字符串

    NSString *str1 = [[NSString alloc]initWithString:@"ios"];

    NSLog(@"str1 = %@",str1);

   // [str1 release];

    

    int a = 10;

    NSString *str2 = [[NSString alloc]initWithFormat:@"%d",a];

    NSLog(@"str2 len = %d",str2.length);//字符串长度

    NSLog(@"str2 = %@",str2);

  //  [str2 release];

    

    //字符串拼接

  //  NSString *str3 = [str1 stringByAppendingString:str2];

    NSString *str3 = [str1 stringByAppendingFormat:@"%d",7];

    NSLog(@"str3 = %@",str3);

    

    NSString *str4 = @"123456789";

    NSString *str5 = [str4 substringFromIndex:0];

     NSLog(@"str5 = %@",str5);

    

    NSString *str6 = [str4 substringToIndex:4];

    NSLog(@"str6 = %@",str6);

    

    NSRange r1 = {2,3};

    NSString *str7 = [str4 substringWithRange:r1];

    NSLog(@"str7 = %@",str7);

   

    //查找字符串

   NSRange r2 = [str4 rangeOfString:@"145"];

    if (r2.location == NSNotFound)

    {

        NSLog(@"Not Found!");

    }

    

//+stringWithContentOfFile:encoding:error;

   // -initWithContentsOfFile:encoding:error;

  //utf-8编码

    

    //字符串的转换函数

    NSString *str8 = @"123.45";

    double d = [str8 doubleValue];

    NSLog(@"%lf",d);

    

    

    //比较字符串

    NSString *str9 = @"123";

    NSString *str10 =@"456";

    if ([str9 isEqualToString:str10])

    {

        NSLog(@"相等");

    }

    

    NSComparisonResult r = [str9 compare:str10];//NSComparisonResult 是枚举类型的

    NSLog(@"r = %d",r);//输出-1 表示升序


    //判断对象是否相等

    if ([str9 isEqual:str10])

    {

        NSLog(@"相等");

    }

    else

    {

        NSLog(@"不相等");

    }

    

    //大小写转换  应用 验证码  lowercaseString  uppercaseString

    

    //可变字符串 NSMutableString

    //可变和不可变的区别

    //可变的操作的是同一块内存,不可变操作的不是同一块内存,他会产生不同内存

    

    NSMutableString *str11 = [[NSMutableString alloc]initWithCapacity:10];

    [str11 appendString:@"ios"];//appendingString appendingFormat,  追加字符串

    [str11 appendFormat:@"%d",7];    

    NSRange r3 = {3,1};

    [str11 deleteCharactersInRange:r3];    

    NSLog(@"str11 = %@",str11);

    

    

    //不可变字符串也能添加新的字符,只不过它已经产生了一个新的字符串对象,跟原来的那个已经没有关系了

    

    [self.window makeKeyAndVisible];

    return YES;

 

集合 
数组指针   char *str = {"ios","andriod","html"};


OC集合(容器)分类 
1)数组Array
2)字典Dictionary
3)集合set
在集合(容器)中添加一个对象,这个对象的引用计数会增加一,且控制权归系统。你只能释放当初你alloc的那个引用计数,添加对象时增加的那个引用计数会在容器被销毁时有系统自动释放。




数组NSArray 
是不可变列表集合
1)可以存在多个对象(对象可以为同一类型,也可为不同的类型)
2)每个对象使用下标来表示
3)最后以nil结束


 self.window = [[[UIWindow allocinitWithFrame:[[UIScreen mainScreenbounds]] autorelease];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

  //数组NSArray

    NSArray *arry = [[NSArray alloc]initWithObjects:@"ios",@"wphone",@"Android"nil];//初始化

    

   // NSArray *arry = [NSArray alloc]initWithObjects:@"ios",@"wphone",@"android", nil];

    //获取数组里面元素的个数

    

    //获取数组中元素

    NSString *str = [arry objectAtIndex:0];

     NSLog(@"str = %@",str);

    //数组长度

    NSLog(@"arrcount = %d",arry.count);

    [arry release];

    

    

    //遍历数组对象方法一

    arry = [NSArray arrayWithObjects:@"ios",@"html5",@"cocoa2D"nil];

    for (int i = 0; i < arry.count; i++) {

        NSString *str = [arry objectAtIndex:i];

        NSLog(@"str1 = %@",str);

    }

 

    

    //遍历数组对象方法二

    for (NSString *str in arry){

        NSLog(@"str = %@",str);

    }

    

    

    //可变数组NSMutableArray

    NSMutableArray *array2 = [[NSMutableArray alloc]initWithCapacity:10];

    //添加元素

    [array2 addObject:@"C#"];

  

    [array2 addObjectsFromArray:arry];

    for (NSString *str in array2)

    {

        NSLog(@"arry2 = %@",array2);

    }

    NSLog(@"arry2 = %@",array2);

  

    //在数组中小括号里面的都是数组

    

    

    //在集合(容器)中添加一个对象,这个对象的引用计数会增加一,且控制权归系统。

    NSString *str3 = [[NSString alloc]initWithFormat:@"%d",10];

    NSLog(@"str3 retainCount:%d",str3.retainCount);    

    [array2 addObject:str3];

    NSLog(@"str3 retainCount:%d",str3.retainCount);

    

    //移除元素

    [array2 removeLastObject:@"C#"];

    [array2 removeObjectAtIndex:0];

    [array2 removeObjectsInArray:array2];

    NSRange r4 = {1,3};

    [array2 removeObjectsInRange:r4];

    NSLog(@"arry = %@",array2);

    

    //替换元素

    [array2 replaceObjectAtIndex:1 withObject:@"xml"];

    NSLog(@"arry2 = %@",array2);

    

    [str3 release];

    [array2 release];

    

    [self.window makeKeyAndVisible];

    return YES;






字典Dictionary
键值存储
key一般是字符串
字典存储的对象无序的,使用key来表示每个对象


字典 
1)创建字典
2)获取对象
3)获取所有的key
4)获取所有对象 
5)字典在控制台是用{}包起来的,但是在字典中时以键值对的形式存放的


控制台的输出:
 

2013-07-12 17:04:57.447 OC_7[2050:c07] mDic = {

    key3 = valu3;

    key4 = valu4;

    key5 = valu5;

    key6 = valu6;

}

    self.window = [[[UIWindow allocinitWithFrame:[[UIScreen mainScreenbounds]] autorelease];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

//字典Dictionary

      NSArray *arry = [NSArray arrayWithObjects:@"html",@"ios"nil];

    

    //创建字典 初始化

    NSDictionary *dic =[[NSDictionary alloc]initWithObjectsAndKeys:@"valu1",@"key1",arry,@"key2"nil];

    NSLog(@"dic count = %d",dic.count);

    

    //取元素

    NSString *str = [dic valueForKey:@"key1"];

    NSLog(@"str = %@",str);

    

    NSString * arry1 = [dic valueForKey:@"key2"];

    NSLog(@"arry1 = %@",arry1);

  

    NSArray *arry2 = [dic allKeys];//key是一个数组

    NSArray *arry3 = [dic allValues];

    

   

    

    //遍历所有的key,返回一个数组,因为key是数组所以是可以遍历的

    for (NSString *key in [dic allKeys]) {

        NSLog(@"%@",[dic allKeys]);

    }

    

   

    //可变字典

    NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithCapacity:10];

    [mDic setObject:@"valu3" forKey:@"key3"];

    [mDic setObject:@"valu4" forKey:@"key4"];

    [mDic setObject:@"valu5" forKey:@"key5"];

    [mDic setObject:@"valu6" forKey:@"key6"];

    

    //打印字典内容

    NSLog(@"mDic = %@",mDic);

    

    [mDic removeObjectForKey:@"key6"];

    NSLog(@"mDic = %@",mDic);

    

 

    /*

    NSLog(@"mDic = %u",mDic.count);

    

    for (NSString *key2 in [mDic allKeys]){

        NSLog(@"%@",[mDic allKeys]);

    }

    */

    

    

     

    //获取所有的key

    

    

    [dic release];

    

    [self.window makeKeyAndVisible];

    return YES;


集合set
集合时无序的,其存储的对象不允许出现重复的
创建,添加,删除,求交集,补集,差集