常用字符串的操作

oc总结,objective-c

OC10天大纲

 

后生可畏、类和目的

1、什么是类?

      同生龙活虎种对象的虚幻就是类。

2、什么是目的?

      世界上的任何事物都得以称之为对象,各个对象都有他自身的性质和行事。

3、如何创建三个类(请把四个.h和一个.m粘过来解释个中的每一块东西卡塔 尔(阿拉伯语:قطر‎

      .h文件由

          @interface 类名 : 父类

          @end

       组成

     1、@interface教导着那些类的名字

     2、interface前边紧跟着那么些类的名字,这里是Human

     3、类名前面紧跟着:(冒号卡塔 尔(英语:State of Qatar),冒号教导着那么些类的父类(父亲类卡塔 尔(阿拉伯语:قطر‎

     4、:前边正是父类的名字,这里是NSObject 

     
在interface的底下,我们能够申明全局(那些类的大局卡塔 尔(阿拉伯语:قطر‎的分子变量、属性、方法 

      最后以@end结束

             @interface Human : NSObject

             //成员变量

             {

                 int _age;//成员变量年龄    

                 int _height;//成员变量身体高度

             }

             -(void)setAge:(int)newAge;

             -(void)setHeight:(int)newHeight;

             -(int)getAge;

             -(int)getHeight;

             @end

 

           #import “Human.h”

             @implementation Human

             -(void)setAge:(int)newAge

             {

                  _age = newAge;

             }

             -(void)setHeight:(int)newHeight

             {

                  _height = newHeight;

             }

             -(int)getAge

             {

                  return _age;

             }

             -(int)getHeight

             {

                  return _height;

             }

             @end

4、怎么着创立二个指标

   使用一个类的分子变量和议程

   1、实例化二个这些类的靶子

   2、使用那么些目的来调用这一个类的靶子方法(减方法卡塔 尔(阿拉伯语:قطر‎

   3、给那么些指标的成员变量赋值

   4、抽取那一个目的的成员变量的值

   Human *lucy = [[Human alloc]init];

  
//实例化一个Human类的对象,lucy是多少个指南针,使用alloc来分配一块内部存款和储蓄器给这些指标       

   //OC方法的调用要用[]括起来

   //[]中前边是调用方法的(对象/类卡塔尔国,什么人来调用方法

   //用空格把什么人和方式隔离

   //空格前面是要调用的办法名

   [lucy setAge:16];

   [lucy setHeight:160];        

    NSLog(@”lucy的年纪是%d岁,身体高度是%dcm”,[lucy getAge],[lucy
getHeight]);

5、setter方法和getter方法

   //setter

   OC的方法:

     
1、(-/+)符号,-的时候那些法子由那些类的目的响应,+的时候一向由那几个类来响应

      2、符号后边跟着(括号卡塔尔国,括号里面是那个格局的重返值

     
3、(括号卡塔 尔(阿拉伯语:قطر‎前边随着的是方法体(方法名卡塔尔国,这一个主意名首字母小写,前面每一种单词的首字母大写(驼峰命名法)

      4、当有参数的时候,将由:(冒号卡塔 尔(阿拉伯语:قطر‎把参数与方法体进行私分

     
5、:(冒号卡塔尔前边紧跟着参数的数据类型,由(卡塔 尔(英语:State of Qatar)包围,数据类型前面是参数的名目

      6、当有多少个参数的时候用“
”空格分割,不过各种参数前,要有那几个参数的方法体

      7、方法名要有含义,令人能看懂

6、OC和C的区别

        1、OC工程名的率先个假名大写,之后每一个单词的首字母大写

        2、OC文件扩充名称为.m,C文件扩充名称为.c

        
3、OC富含头文件使用#import,C包括头文件使用#include,#import的效劳正是帮大家缓和了双重包括的标题

         4、OC打印使用NSLog,C打印使用printf。

         5、NSLog里面“”前要加上@符号

         6、NSLog自动换行无需手动n

         7、文件名的第三个假名大写,之后每一个单词的首字母大写

 

二、字符串

1、OCSting和CString的区别

       使用alloc创设三个OC字符串

     1、直接把三个NSString通过init方法赋值给大家新创设的NSString字符串

         NSString *tempString =
@”hello”;//把四个字符串常量授予三个字符串指针

         NSLog(@”tempString is
%@”,tempString);//OC字符串的打字与印刷不可能用%s,而要用%@(实际上%@在OC里面什么都能打卡塔 尔(英语:State of Qatar)

         NSString *string1 = [[NSString alloc]
initWithString:tempString];

         NSLog(@”string1 is %@”,string1);

    
2、使用一个C语言的字符串通过init方法赋值给我们新创立的NSString字符串

         NSString *string2 = [[NSString alloc] initWithCString:”i am
pig”encoding:NSUTF8StringEncoding];

         NSLog(@”string2 is %@”,string2);

     3、通过格式化赋值给大家新创造的NSString字符串(有一个凑合的功效卡塔 尔(阿拉伯语:قطر‎

         NSString *string3 = [[NSString alloc] initWithFormat:@”%@
%@”,@”i am”,tempString];

         NSLog(@”string3 is %@”,string3);

         NSString *string4 = [[NSString alloc]
initWithFormat:@”%@”,@”作者是好人”];

2、NSString的具有办法

     A、使用类方式创立OC字符串(这一个才是大家常用的始建方法卡塔尔

    1、使用字符串间接赋值

        NSString *tempString = @”hello”;

        NSString *string5 = [NSString stringWithString:tempString];

        NSLog(@”string5 is %@”,string5);

    2、使用C语言字符串赋值

        NSString *string6 = [NSString stringWithCString:”我爱你”
encoding:NSUTF8StringEncoding];

        NSLog(@”string6 is %@”,string6);

        NSString *string7 = [NSString
stringWithFormat:@”我是%@”,@”猪”];

        NSLog(@”string7 is %@”,string7);        

    B、字符串的拼凑

        NSString *string8 = @”你好”;

        NSString *string9 = @”北京”;

        NSString *catString = [NSString
stringWithFormat:@”%@,%@”,string8,string9];

        NSLog(@”catString is %@”,catString);        

        NSString *catSecondString =[catString
stringByAppendingString:@”我来了”];

        NSLog(@”catSecondString is %@”,catSecondString);      

        NSString * catSecondString2=[NSString
stringWithFormat:@”今每八日气不错”];

        NSString *catSecondString3= [catSecondString2
stringByAppendingString:@”大家不上课”];

        NSLog(@”catSecondString3 %@”,catSecondString3);        

    C、字符串长度

        NSString *aString = @”整理整理”;

        NSInteger stringLength = [aString length];

        NSLog(@”astring 的尺寸是 %lu”,stringLength);        

      D、判别字符串是或不是等于
关键词:isEqualToString,调用这么些措施的是一个字符串对象,参数也是贰个字符串对象,重返值是一个BOOL值(YES/NO卡塔尔,所谓bool值正是int值,能够用%d打字与印刷

        NSString *first = @”我2″;

        NSString *second = @”我2″;

        BOOL isEqual = [first isEqualToString:second];

        NSLog(@”%d”,isEqual);

      E 、字符串相比较 关键词compare,

        NSString *string1 = @”我是羊”;

        NSString *string2 = @”我是羊”;

        int result = [string1 compare:string2];

        NSLog(@”%d”,result);

        

            E.a不区分抑扬顿挫写的字符串比较 关键词compare: options:

        NSString *str1 = @”abcd”;

        NSString *str2 = @”ABCD”;

        int result = [str1 compare:str2
options:NSCaseInsensitiveSearch];

        NSLog(@”%d”,result);

        

      F、大小写转变

        NSString *str1 = @”abcd”;

        NSString *uperStr = [str1 uppercaseString];//小写转大写

        NSLog(@”nuper is %@ nolder is %@”,uperStr,str1);

        

        NSString *str2 = @”ABCD”;

        NSString *lowerStr = [str2 lowercaseString];//大写转小写

        NSLog(@”nlower is %@ nolder is %@”,lowerStr,str2);

        

        NSString *str3 = @”sAfdnl”;

        NSString *capStr = [str3 capitalizedString];//首字母大写

        NSLog(@”ncap is %@ nolder is %@”,capStr,str3);

        

      G、字符串查找

        NSString *str = @”大家都以大好人,大好人,大好人。”;

     G.a  接下去本人想搜寻“大好人”上边字符串里面有未有

        NSRange range = [str
rangeOfString:@”大好人”];//调用这么些措施的是三个字符串对象变量,参数是想要查找的剧情字符串,结果是在调用的字符串里面有未有,在何地有

        if(range.location == NSNotFound)//假使成功,表达未有

        {

            NSLog(@”没找着”);

        }

        else

        {

            NSLog(@”location is %d,length is
%d”,range.location,range.length);

        }

        //NSRange里面有两个变量,叁个是岗位index,一个是长度length.
NSRange不是对象,是个结构体

        

     G.b 从后迈入找

        NSRange range1 = [str rangeOfString:@”大好人”
options:NSBackwardsSearch];

        NSLog(@”location is %d,lenth is
%d”,range1.location,range1.length);

        

     G.c 剖断前后缀

        NSString *str = @”1234567890″;

        //前缀 关键词hasPrefix

        BOOL isHave21 = [str hasPrefix:@”12″];

        if(isHave21 == YES)

        {

            NSLog(@”你赢了”);

        }

        else

        {

            NSLog(@”你输了”);

        }

        //后缀 关键词hasSuffix

        BOOL isHave09 = [str hasSuffix:@”90″];

        if(isHave09 == YES)

        {

            NSLog(@”找到了”);

        }

        else

        {

            NSLog(@”木有如何做”);

        }

        

     H、字符串提取(截出来)

        NSString *str = @”123321234567″;

          H.a 从头截起到某二个index(下标卡塔尔国该index不截

        NSString *topStr = [str substringToIndex:4];

        NSLog(@”%@”,topStr);

         H.b 从某一个index截起,到终极竣事,该index截

        NSString *endStr = [str substringFromIndex:8];

        NSLog(@”%@”,endStr);

         H.c 截某生机勃勃段,使用NSRange,location这一个index截

//        NSString *rangeStr = [str substringWithRange:NSMakeRange(4,
4)];//制作贰个NSRange使用NSMakeRange(location,length卡塔 尔(阿拉伯语:قطر‎

//        NSLog(@”%@”,rangeStr);

//        

//        NSRange range = [str rangeOfString:@”1234″];

//        if(range.location == NSNotFound)

//        {

//            NSLog(@”什么也不干”);

//        }

//        else

//        {

//            NSString *finalStr = [str substringWithRange:range];

//            NSLog(@”%@”,finalStr);

//        }

3、NSMutableString的享有办法

 

       
//NSMutableString在采纳时最棒不要平昔赋值([email protected]“”卡塔尔国,因为这几个NSMutableString是可变字符串,他的开始和结果应该都是append进去的

        

//        //alloc成立 Mutable的东西都要开端化

//        NSMutableString *mutableStr = [[NSMutableString alloc]
initWithCapacity:0];//参数capacity后边写多少都不会报错,可是常常都先写0

//        

//        //类方法创设

//        NSMutableString *mutableStrClass = [NSMutableString
stringWithCapacity:0];

        

        //增(赋值)

        /*

         1、制造可变字符串对象

         2、向这几个指标开展加多

         */

        NSMutableString *str = [NSMutableString
stringWithCapacity:0];//创制对象

        [str appendString:@”123″];//间接助长

        NSLog(@”%@”,str);

        [str appendFormat:@”%d”,11];//格式化增添

        NSLog(@”%@”,str);

        [str insertString:@”我” atIndex:3];//向index的任务增加字符串

        NSLog(@”%@”,str);

        

        //删(删的要么本身)

        [str deleteCharactersInRange:NSMakeRange(2,
3)];//删除可变字符串中的二个间隔的字符串

        NSLog(@”%@”,str);

        

        //改

        [str setString:@”abcdefg”];//全改

        NSLog(@”%@”,str);

        

        [str replaceCharactersInRange:NSMakeRange(3, 2)
withString:@”风流倜傥二三四”];//把可变字符串中的风度翩翩段改为第2个参数的字符串内容

        NSLog(@”%@”,str);

 

三、数组、字典

1、NSArray的具备办法

        //OC的数组

        //1、数组里面只可以存对象

        //2、同三个数组里面存的数据类型能够区别

        //3、数组里面存的是指标指针的聚合

        

        //NSArray

        //创建 alloc

        

        //initWithObjects

        NSArray *array = [[NSArray alloc]
initWithObjects:@”123″,@”456″,@”789″, nil];

        //nil表示停止

        //数组里面存对象时,要一口咬住不放是还是不是为nil,不然轻松并发奇怪的难点

        NSLog(@”%@”,array);

        

        //initWithArray 用多个数组来开始化另二个数组

        NSArray *array1 = [[NSArray alloc] initWithArray:array];

        NSLog(@”array is %@”,array1);

        

        //类方法

        NSArray *array2 = [NSArray
arrayWithObjects:@”123″,@”456″,@”789″, nil];

        NSArray *array3 = [NSArray arrayWithArray:array2];

        

        //获取数组的成分

        NSString *str1 = [array2 objectAtIndex:1];

        NSLog(@”%@”,str1);

        

       
//练习,从数组@[@”我是人”,@”你也是”,@”他不是”];中取出index等于2的对象,并打印

        

        //练习
从数组@[@”我是人”,@”你也是”,@”他不是”];中取出index等于3的对象,并打印

        

        //要小心越界的难点

        

        //练习
从数组@[@”我是人”,@”你也是”,@”他不是”];中抽出全部指标,并相继打字与印刷

        

        NSArray *array8 = [NSArray
arrayWithObjects:@”我是人”,@”你也是”,@”他不是”, nil];

        NSString *str5 = [array8 objectAtIndex:0];

        NSString *str6 = [array8 objectAtIndex:1];

        NSString *str7 = [array8 objectAtIndex:2];

        NSLog(@”%@n %@n %@”,str5,str6,str7);

        

        for(int i = 0;i<3;i++)

        {

            NSLog(@”%@”,[array8 objectAtIndex:i]);

        }

        

        //数组的尺寸

        int arrCount = [array8 count];

        NSLog(@”%d”,arrCount);

        

        for(int i =0;i<[array8 count];i++)

        {

            NSLog(@”%@”,[array8 objectAtIndex:i]);

        }

        

       
//练习,从@[@”1″,@”2″,@”3″]中抽出全部目的,并打字与印刷。要求分别选用遍历和不遍历的主意写,遍历时候不能够用.count和[下标]

        

        //遍历@[@”i”,@”k”,@”f”];

        //使用i<count

        NSArray *arr1=[[NSArray alloc]
initWithObjects:@”i”,@”k”,@”f”, nil];

        for(int i=0;i<[arr1 count];i++)

        {

            NSLog(@”%@”,[arr1 objectAtIndex:i]);

        }

        

        //for in

        for(NSString *temp in arr1)

        {

            NSLog(@”%@”,temp);

        }

        

        //练习 使用for in 来遍历@[@”a”,@”b”,@”c”];

        

        

        //分割字符串

        NSString *s1 = @”i am a people”;

        NSArray *arr10 = [s1 componentsSeparatedByString:@” “];

        NSLog(@”%@”,arr10);

        NSString *newStr = [NSString
stringWithFormat:@”%@%@%@%@”,[arr10 objectAtIndex:0],[arr10
objectAtIndex:1],[arr10 objectAtIndex:2],[arr10 objectAtIndex:3]];

        NSLog(@”%@”,newStr);

        

        NSMutableString *s2 = [NSMutableString stringWithCapacity:0];

//        for(NSString *temp in arr10)

//        {

//            [s2 appendString:temp];

//        }

        for(int i = 0;i<[arr10 count];i++)

        {

            [s2 appendString:[arr10 objectAtIndex:i]];

        }

        NSLog(@”%@”,s2);

        

        //演练 有电话号码 133-3333-3333,变成1333333333

        

        //1(333·) 333 3333

        

        //componentsSeparatedByString

        //1(333·)3333333

        //1333·)3333333

        //1333·3333333

        //13333333333

        

        //同一时间切相当多

        NSString *tel = @”1(333·) 333 3333″;

        NSArray *telArr = [tel
componentsSeparatedByCharactersInSet:[NSCharacterSet
characterSetWithCharactersInString:@”(·) “]];//传入要切的字符集合

        

        NSMutableString *s3 = [NSMutableString stringWithCapacity:0];

        for(int i = 0;i<[telArr count];i++)

        {

            if([[telArr objectAtIndex:i] isEqualToString:@””] ==
NO)//因为用set方法切出来的数组里会有垃圾@””的留存,所以须要判别一下每多个目录的内容是不是为垃圾@””

            {

                [s3 appendString:[telArr objectAtIndex:i]];

            }

        }

        NSLog(@”%@”,s3);

        NSLog(@”%@”,telArr);

        

        //练习,<aaaa bbbb cccc dddd
1111>,截出来aaaabbbbccccdddd1111,提示笨办法,先切“
”,再切(,再切卡塔 尔(英语:State of Qatar)。轻便的用set方法直接把@“”、(、卡塔尔一同切了,供给打字与印刷切完的数组和切好的字符串

        

        NSString *tokenStr = @”<aaaa bbbb cccc dddd
1111>”;//创立字符串

        NSArray *tokenArr = [tokenStr
componentsSeparatedByCharactersInSet:[NSCharacterSet
characterSetWithCharactersInString:@”<>
“]];//设置要切的字符集结,并切

        NSMutableString *tokenSubedStr = [NSMutableString
stringWithCapacity:0];//可变字符串

        for(int i = 0;i<[tokenArr count];i++)//遍历

        {

            if([[tokenArr objectAtIndex:i]isEqualToString:@””] ==
NO)//判别是或不是垃圾

            {

                [tokenSubedStr appendString:[tokenArr
objectAtIndex:i]];//拼截字符串

            }

        }

        NSLog(@”%@”,tokenArr);

        NSLog(@”%@”,tokenSubedStr);

        

        //练习 把“2014年6月20日 12:12:22”,切成2014620121222

        //1、注解字符串

        NSString *timeStr = @”2014年6月20日 12:12:22″;

        //2、开切

        NSArray *timeArr = [timeStr
componentsSeparatedByCharactersInSet:[NSCharacterSet
characterSetWithCharactersInString:@”年月日: “]];

        //3、可变字符串创造

        NSMutableString *subOverStr = [NSMutableString
stringWithCapacity:0];

        //4、遍历

        for(int i =0;i<[timeArr count];i++)

        {

            //5、推断垃圾

            if([[timeArr objectAtIndex:i] isEqualToString:@””] ==
NO)

            {

                //6、拼接

                [subOverStr appendString:[timeArr objectAtIndex:i]];

            }

        }

        //7、打印

        NSLog(@”%@”,timeArr);

        NSLog(@”%@”,subOverStr);

        

        //演习有一个网络重临值:“小编:罗布in汉.大卫”,供给是咱们只体现姓:小编:大卫

        NSString *author = @”作者:罗宾汉.大卫”;

        NSArray *cutArr = [author componentsSeparatedByString:@”.”];

        NSString *overStr = [NSString
stringWithFormat:@”作者:%@”,[cutArr objectAtIndex:[cutArr
count]-1]];

        NSLog(@”%@”,overStr);

        

        //练习 把@“作者:罗布in汉.David”的名截出来

        NSString *name = @”作者:罗宾汉.大卫”;

        NSArray *arrTemp = [name
componentsSeparatedByCharactersInSet:[NSCharacterSet
characterSetWithCharactersInString:@”:.”]];

        NSMutableString *tempStr = [NSMutableString
stringWithCapacity:0];

        

        [tempStr appendString:[arrTemp objectAtIndex:1]];

 

2、NSMutableArray的拥有办法

 

        //可变数组 NSMutableArray

        

        //成立方法

        NSMutableArray *mutableArr = [NSMutableArray
arrayWithCapacity:0];//类方法创设

        NSLog(@”%@”,mutableArr);

        //增删改

        //增,向数组里增加新的对象

        

        //add增加,向数组的末尾一人扩大,依次

        [mutableArr addObject:@”hello”];

        NSLog(@”%@”,mutableArr);

        [mutableArr addObject:@”world”];

        NSLog(@”%@”,mutableArr);

        

        //insert,向数组中某个人增多新对象

        [mutableArr insertObject:@”my” atIndex:1];

        NSLog(@”%@”,mutableArr);

        

//        //删

//        //删除某五个索引的指标

//        [mutableArr removeObjectAtIndex:1];//须求看清是不是越界

//        

//        //删除末了一个人

//        [mutableArr removeLastObject];

//        

//        //一下删光,清空

//        [mutableArr removeAllObjects];

//        NSLog(@”%@”,mutableArr);

        

        //改

        [mutableArr replaceObjectAtIndex:1 withObject:@”your”];

        NSLog(@”%@”,mutableArr);

        

        //演练,有一个列表,列表里面有不菲行, 一个人的名字,

        //依次是@”A”、@”B”, ————–add::结果::A,B

        //然后又多了几个人名:@”C”、@”D”,———-add::结果::A,B,C,D

        //然后C不见了,——–remove index::结果::A,B,D

        //然后A和B之间多了叁个E, ——–insert::结果::A,E,B,D

        //再然后B改名了成为了F, ——–replace::结果::A,E,F,D

        //最后把数组清空 ———removeall

        //每完结一步都打印一下,看看结果

        

        //练习,首先有多少个可变数组,

        //1、向在那之中增多几个字符串@“1”,@“2”,

        //2、变成@“1”,@“4”,@“2”

        //3、变成@“5”,@“4”,@“2”

        //4、变成@“5”,@”4“

        NSMutableArray *arrNum = [NSMutableArray
arrayWithCapacity:0];

        [arrNum addObject:@”1″];

        [arrNum addObject:@”2″];

        [arrNum insertObject:@”4″ atIndex:1];

        [arrNum replaceObjectAtIndex:0 withObject:@”5″];

        [arrNum removeObjectAtIndex:2];

        //[arrNum removeLastObject];

        NSLog(@”%@”,arrNum);

        

        [arrNum addObject:@”1″];

        [arrNum addObject:@”10″];

        [arrNum addObject:@”6″];

        //5,4,1,10,6

        

        //调交换一下地点置

        NSLog(@”%@”,arrNum);

        [arrNum exchangeObjectAtIndex:1
withObjectAtIndex:4];//把前后八个参数的index地方的目的换来

        NSLog(@”%@”,arrNum);

        

        //排序

        //冒泡

        for(int i = 0;i<[arrNum count]-1;i++)

        {

            for(int j = 0;j<[arrNum count]-1-i;j++)

            {

                if([[arrNum objectAtIndex:j] compare:[arrNum
objectAtIndex:j+1] options:NSCaseInsensitiveSearch]<0)

                {

                    [arrNum exchangeObjectAtIndex:j
withObjectAtIndex:j+1];

                }

            }

        }

        NSLog(@”%@”,arrNum);

        

        //以往有多少个数组是

        NSArray *arrhere = [NSArray
arrayWithObjects:@”4″,@”6″,@”2″,@”8″,@”1″, nil];

        //要开展排序

        //思路,把NSArray
产生NSMutableArray,当要对指标自己进行改换时,要把对象转为可变的类型

        //创制二个Mutable的数组

        NSMutableArray *mutableArrHere = [NSMutableArray
arrayWithCapacity:0];

    

        for(int i = 0;i<[arrhere count];i++)

        {

            [mutableArrHere addObject:[arrhere objectAtIndex:i]];

        }

        //然后对那么些可变的数组举办排序

    }

 

 

3、NSDictionary的全体办法

 

           //什么是字典

            //字典是有目录的,每叁个索引都对应一个剧情

            //       key                    value

            //OC字典的主题正是key&value

        

        //NSDictionary NSMutableDictionary

        

        //NSDictionary

        //字典是冬日的

        //alloc 创建

        NSDictionary *dic = [[NSDictionary alloc]
initWithObjectsAndKeys:@”V1″,@”K1″, nil];

       
//字典都以由一些目的组成的,这生机勃勃对目的后面一个是value,前面一个是key,key是字符串,value是随意对象

        NSLog(@”%@”,dic);

        //打字与印刷出来的字典由{}包围,{}里面是key = value的格式

        

        NSDictionary *dic1 = [[NSDictionary alloc]
initWithDictionary:dic];

        

        //类方法 创造 key不要再度

        NSDictionary *dic2 = [NSDictionary
dictionaryWithObjectsAndKeys:@”虾条”,@”零食”,@”面条”,@”主食”,@”手抓肉”,@”炒菜”,@”二锅头”,@”饮料”,
nil];

        NSDictionary *dic3 = [NSDictionary
dictionaryWithDictionary:dic2];

        

        //找到相应key的value

       
//关键词是objectForKey:参数是key,重回值是对应key的value,value是如何类型的对象,再次回到值正是怎么项目标再次回到值

        NSString *mainFood = [dic2 objectForKey:@”主食”];

        NSLog(@”%@”,mainFood);

        

        NSString *drink = [dic2 objectForKey:@”饮料”];

        

       
//遍历,遍历数组直接就遍历这多少个对象。字典遍历的时候不是value,遍历的是key

        NSArray *dicArr = [dic2
allKeys];//通过allKeys能够找到四个字典里面包车型地铁装有的key,重临值是三个数组

        for(int i = 0;i<[dicArr count];i++)

        {

            NSLog(@”%@”,[dicArr objectAtIndex:i]);

        }

        

        //演练,有三个字典@[@”a”:@”A”,@”b”:@”B”,@”c”:@”C”,@”d”:@”D”]

        //先创立出来,

        //找到c这个key对应的value

        //遍历那个字典,查找是还是不是有d那几个key,假如有,打字与印刷他的value

        

        NSDictionary *charDic = [NSDictionary
dictionaryWithObjectsAndKeys:@”A”,@”a”,@”B”,@”b”,@”C”,@”c”,@”D”,@”d”,
nil];

        NSLog(@”%@”,[charDic objectForKey:@”c”]);

        

        NSArray *charDicArr = [charDic allKeys];

        for(NSString *tempStr in charDicArr)

        {

            if([tempStr isEqualTo:@”d”])

            {

                NSLog(@”%@”,[charDic objectForKey:tempStr]);

            }

            else

            {

                NSLog(@”这么些不是”);

            }

        }

 

4、NSMutableDictionary的全部办法

 

        //NSMutableDictionary

        //创建

        NSMutableDictionary *mutableDic = [NSMutableDictionary
dictionaryWithCapacity:0];

        

        //扩张加新的key和value

        [mutableDic setValue:@”china” forKey:@”country”];

        [mutableDic setValue:@”北京” forKey:@”province”];

        

        //删除

        [mutableDic removeObjectForKey:@”country”];

        

        [mutableDic removeAllObjects];

        

        //练习

        //建多少个可变字典

        NSMutableDictionary *peopleDic = [NSMutableDictionary
dictionaryWithCapacity:0];

        //set两个value&key(name:lucy,age:16)

        [peopleDic setObject:@”lucy” forKey:@”name”];

        [peopleDic setObject:@”16″ forKey:@”age”];

        //根据age找到value

        NSLog(@”%@”,[peopleDic objectForKey:@”age”]);

        //加多叁个value&key(sex:female)

        [peopleDic setObject:@”female” forKey:@”sex”];

        //删除叁个value&key(name)

        [peopleDic removeObjectForKey:@”name”];

        //全删

        [peopleDic removeAllObjects];

        

       
//数组、字典里面包车型客车剧情不止是字符串(NSString卡塔尔,而大概是装有的靶子类型

        NSMutableArray *tableArr = [NSMutableArray
arrayWithCapacity:0];

        for(int i = 0;i<5;i++)

        {

            NSDictionary *hereDic = [NSDictionary
dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@”age is
%d”,arc4random()%100],@”age”,[NSString stringWithFormat:@”sex is
%d”,arc4random()%1],@”sex”,[NSString stringWithFormat:@”height is
%d”,arc4random()%200],@”height”, nil];

            [tableArr addObject:hereDic];

        }

        NSLog(@”%@”,tableArr);

        NSLog(@”age is %@”,[[tableArr objectAtIndex:1]
objectForKey:@”age”]);

    }

 

 

四、继承、类别、点语法

1、什么是接二连三?

 

//OC中的世襲

//  定义了三个FlyCar类, 那几个类世袭与Car类

//  称呼:     子类, 父类

//  本性: 子类会具有父类的本性和艺术

@interface FlyCar : Car

//  Fly类中存有父类Car类中speed,weight,move,load

{

    double _flySpeed;

}

@property double flySpeed;

 

//具备小车没有技艺, 飞行

 

-(void)fly;

 

@end

 

 

总括:
(1)OC各类类必需有个父类

假若你不精晓要持续那些类,
世袭NSObject

NSObject称为根类,
其余类都会直接大概

直接的接轨这一个类

扩大:
xcode前期版本上(4.2)(不加父类不会报错)

 

(2)OC中三个类能还是无法一连与八个类???
(多三番一遍)

 

OC中叁个类只可以一而再接二连三与二个类, 

无法持续与多少个类      
(C++能够多一连)

(3) 自定义init方法

 

2、怎么着创建三个子类

 

//OC每一个类只必要开端化本身的实例变量

//  完毕子类的时候, 因为子类中含有了父类的实例变量

//  所以子类中料定试行父类的init方法

-(id)init

{

    //self是方式隐瞒的参数

    //  self存款和储蓄的是当下目的的地点

    //  Car *car = [[Car alloc] init];

    //      实例方法中: self的值正是car指针的值

    //  self什么日期使用

    //      (1)调用当前类的措施

    //          [self print];

    //      (2)使用property

    //          self.name = @”xiaoli”;

    

    //super是编写翻译器的提示符

    //  表示父类

    //  用法: 施行从父类中世襲下去的点子

    

    if(self = [super init])

    {

        NSLog(@”Car init”);

    }

    return self;

}

 

3、继承有如何用

 

接轨(修章、也得以扩张卡塔 尔(英语:State of Qatar)

4、如何创立一个品类

 

5、连串有哪些用

 

 

品种(增加方法卡塔 尔(英语:State of Qatar)

 

6、种类和三番五回有哪些分别

 

7、点语法如何兑现

 

 

 

 

8、点语法的修饰符有哪些,都以何许看头(全部的修饰符卡塔尔国

 

五、封装、复合

1、明白封装和复合的定义

 

 

 

六、单例、NSData、文件

1、什么是单例

 

 

 

..

0//第一步 声美赞臣个大局静态变量(那些类的对象)

static Sign *single=nil;

@implementation Sign

//第二步 实现+方法

+(id)shareInstance

{//第三步 做一个部分静态变量 是dispatch_once_t的体系的

    static dispatch_once_t onceTaken;

    //第四步
执行dispatch_once方法,第贰个参数是地点的onceTaken的地址,第二个参数是如此写的^{},在大括号里面达成全局静态变量的alloc方法,并在alloc方法后边加分号。

    dispatch_once(&onceTaken,^{

        single=[[Sign alloc]init];

        single.isSign = @”yes”;

    });

    //第五步 最终将静态全局变量return

    return single;

 

 

 

3、NSData与字符串、数组、字典的并行调换    

 

        //NSData 数据类 用在本地缓存、互联网要求 NSData正是贰个二进制

        //1、NSString with NSData

//        NSString *str = @”我是一个神州人”;

//        //把NSString转换为NSData  

//        NSData *strData = [str
dataUsingEncoding:NSUTF8StringEncoding];

//        NSLog(@”%@”,strData);

//        

//        //把NSData转换为NSString

//        NSString *backStr = [[NSString alloc] initWithData:strData
encoding:NSUTF8StringEncoding];

//        NSLog(@”back str is %@”,backStr);

//        

//        NSString *
[email protected]”又是你”;

//        NSData * myData=[myStr
dataUsingEncoding:NSUTF8StringEncoding];

//        

//        NSString * myStr2=[[NSString alloc] initWithData:myData
encoding:NSUTF8StringEncoding];

//        NSLog(@”%@  %@”,myData,myStr2);

//        //2、NSArray with NSData

//    NSArray *arr = [NSArray
arrayWithObjects:@”1″,@”2″,@”3″,@”4″, nil];

//        //把NSArray 转为NSdata

//        NSData *arrData = [NSKeyedArchiver
archivedDataWithRootObject:arr];

//        NSLog(@”%@”,arrData);

 

//        //把NSData 转回NSArray

//        NSArray *backArr = [NSKeyedUnarchiver
unarchiveObjectWithData:arrData];

//        NSLog(@”backArr is %@”,backArr);

 

//        //3、NSdictionary with NSData

//        //把NSDictionary转成NSData

 

//        NSDictionary *dic = [NSDictionary
dictionaryWithObjectsAndKeys:@”a”,@”1″,@”b”,@”2″, nil];

//        //创造一个可变Data

//        NSMutableData *dicData = [[NSMutableData alloc] init];

//        //把这些可变data插足到一个归档中,作为被写入的目的

//        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]
initForWritingWithMutableData:dicData];

//       
//实行归档操作,把dic转存进data中,使用对象-key的章程,key是为了以后能找到某一个规定指标用的,这里能够用不一致的key存非常多个对

                        象(参照他事他说加以考查可变字典setValue:ForKey:卡塔尔

//        [archiver encodeObject:dic forKey:@”dic”];

//        //归档甘休

//        [archiver finishEncoding];

//        NSLog(@”%@”,dicData);

//        

//        //把NSData转回NSDictionary

//        //创立叁个解归档的靶子,这些目的初步化从三个NSData里面读数据

//        NSKeyedUnarchiver *unArchier = [[NSKeyedUnarchiver alloc]
initForReadingWithData:dicData];

//        //使用那些解归档的对象来把data依照key寻找相应的目的转回dic

//        NSDictionary *backDic = [unArchier
decodeObjectForKey:@”dic”];

//        //结束解归档

//        [unArchier finishDecoding];

//        NSLog(@”backDic is %@”,backDic);

//        

//        

//        NSDictionary *dicTest = [NSDictionary
dictionaryWithObjectsAndKeys:@”lily”,@”name”, nil];        

//        NSMutableData *dicToData = [[NSMutableData alloc]init];  
   

//        NSKeyedArchiver *archiverTest = [[NSKeyedArchiver
alloc]initForWritingWithMutableData:dicToData];        

//        [archiverTest encodeObject:dicTest forKey:@”test”];        

//        [archiverTest finishEncoding ];

//                

//        NSKeyedUnarchiver *unarchiverTest = [[NSKeyedUnarchiver
alloc]initForReadingWithData:dicToData];   

//        NSDictionary * dataTodic =  [unarchiverTest
decodeObjectForKey:@”test”];        

//        [unarchiverTest finishDecoding];

//        

//        NSLog(@”test %@”,dicToData);

//        NSLog(@”test %@”,dataTodic);

 

 

4、文件操作的持有办法

 

      //使用单例成立二个文件微机的指标,defaultManager正是二个单例方法

        NSFileManager *fm = [NSFileManager defaultManager];

        

        //成立文件,日常的话先要判断文件是还是不是留存

        ///Users/qianfeng/Desktop/是11.txt的路径

        //路线后边跟叁个文件名,文件名要抬高扩充名

        BOOL ifExist = [fm
fileExistsAtPath:@”/Users/qianfeng/Desktop/14.txt”];

        NSLog(@”%d”,ifExist);

        

        //当bool值为NO的时候,我们创制二个新的公文

        if(ifExist == NO)

        {

           
//第八个参数便是想创设的公文的路子,路线里面要包含就要创立的文件的名字和扩展名

            BOOL ifCreateSuccess = [fm
createFileAtPath:@”/Users/qianfeng/Desktop/14.txt” contents:nil
attributes:nil];

            if(ifCreateSuccess == YES)

            {

                NSLog(@”成功”);

            }

            else

            {

                NSLog(@”失败”);

            }

        }

        

        //创造叁个目录,第叁个参数是渠道

        BOOL isPathSuccess = [fm
createDirectoryAtPath:@”/Users/qianfeng/Desktop/123/456″
withIntermediateDirectories:YES attributes:nil error:nil];

        if(isPathSuccess)

        {

            NSLog(@”成功”);

        }

        else

        {

            NSLog(@”失败”);

        }

        

        //获取文件大小的点子

        NSDictionary *fileDic = [fm
attributesOfItemAtPath:@”/Users/qianfeng/Desktop/14.txt” error:nil];

        NSLog(@”%@”,fileDic);

        long long size = [fileDic fileSize];

        NSLog(@”%lld”,size);

        

        //遍历文件夹

       
//错误消息的对象,比超级多方法都会把那么些指标的地址传进去,当某一个主意试行时现身难点了,就足以打字与印刷那几个error,看见到底哪个地方错了

        NSError *error = nil;

        

       
//浅层遍历,只遍历大家加以的门径那些文件夹的根目录,error参数字传送的是地点,要加&

        NSArray *shallowArr = [fm
contentsOfDirectoryAtPath:@”/Users/qianfeng/Desktop” error:&error];

        if(error)

        {

            NSLog(@”%@”,error);

        }

        else

        {

            NSLog(@”%@”,shallowArr);

            //找文件类型,原理便是遍历下边数组,剖断扩张名

            for(NSString *fileName in shallowArr)

            {

                if([fileName hasSuffix:@”.txt”])

                {

                    NSLog(@”%@”,fileName);

                }

            }

        }

        //深层遍历,遍历大家给定路线文件夹的公文以至其子目录下的文件

        //把遍历出来的文本存到数组中

        NSArray *deepArr = [fm
subpathsOfDirectoryAtPath:@”/Users/qianfeng/Desktop/123″ error:&error];

        if(error)

        {

            NSLog(@”%@”,error);

        }

        else

        {

            NSLog(@”%@”,deepArr);

        }

        

        //文件的复制和活动

        NSArray *fileArr = [fm
contentsOfDirectoryAtPath:@”/Users/qianfeng/Desktop/123/456″
error:&error];

        if(error)

        {

            NSLog(@”%@”,error);

        }

        else

        {

            NSLog(@”%@”,fileArr);

        }

        //文件路线

        NSString *filePath = [NSString
stringWithFormat:@”/Users/qianfeng/Desktop/123/456/%@”,@”14.txt”];

        //文件目标路线

        NSString *toPath = [NSString
stringWithFormat:@”/Users/qianfeng/Desktop/123/%@”,@”14.txt”];

        //复制

//        BOOL isCopySuccess = [fm copyItemAtPath:filePath
toPath:toPath error:&error];

//        if(isCopySuccess)

//        {

//            NSLog(@”成功”);

//        }

//        else

//        {

//            NSLog(@”失败%@”,error);

//        }

        //移动

        BOOL isMoveSuccess = [fm moveItemAtPath:filePath toPath:toPath
error:&error];

        if(isMoveSuccess)

        {

            NSLog(@”成功”);

        }

        else

        {

            NSLog(@”失败%@”,error);

        }

        

        //以上内容是文本的操作,都要选取NSFileManager的单例对象

 

 

5、文件内容操作的富有办法

 

        //接下来是文件的从头到尾的经过的读写操作

        //张开贰个文本,会有只读、只写、读写的二种办法

        //操作文件内容的类是NSFileHandle类

        NSFileHandle *file = [NSFileHandle
fileHandleForUpdatingAtPath:@”/Users/qianfeng/Desktop/123/14.txt”];//fileHandleForUpdatingAtPath是读写

        //展开之后大家的公文偏移量在开首(光标),偏移量是0

        NSData *fileData = [file readDataOfLength:1];//读多少个字节

        NSString *fileStr = [[NSString alloc] initWithData:fileData
encoding:NSUTF8StringEncoding];

        NSLog(@”%@”,fileStr);

        //读了一次之后,大家的文本偏移量就到了上次读过的下五个职分了

        NSData *fileData2 = [file readDataToEndOfFile];

        NSString *fileStr2 = [[NSString alloc]
initWithData:fileData2 encoding:NSUTF8StringEncoding];

        NSLog(@”%@”,fileStr2);

        //偏移量现在曾经到了最终了

        //写文件内容

        NSString *string1 = @”123456789″;

        NSData *string1Data = [string1
dataUsingEncoding:NSUTF8StringEncoding];//转str到data

        [file writeData:string1Data];

        

        //未来偏移量在终极

        //移动偏移量光标到最最初

        [file seekToFileOffset:0];

        

        NSString *string2 = @”@#$%*&(“;

        NSData *string2Data = [string2
dataUsingEncoding:NSUTF8StringEncoding];//转str到data

        [file writeData:string2Data];

 

七、Plist、归档(字典)

1、Plist文件的开创

 

 

 

 

 

2、plist文件的门类以致每一级的门类

 

 

 

 

3、怎么着把三个plist文件读出来

 

 

        //从二个内容为字典的plist文件中取回字典的剧情

        NSDictionary *stringPlistDic = [NSDictionary
dictionaryWithContentsOfFile:@”/Users/qianfeng/Desktop/Plist/Plist/String.plist”];

        //NSLog(@”%@”,stringPlistDic);

        //打印name这个key的value

        //NSLog(@”%@”,[stringPlistDic objectForKey:@”name”]);

        

        NSArray *stringPlistArr = [NSArray
arrayWithContentsOfFile:@”/Users/qianfeng/Desktop/Plist/Plist/Arr.plist”];

        //NSLog(@”%@”,stringPlistArr);

        

        NSDictionary *dic1 = [NSDictionary
dictionaryWithContentsOfFile:@”/Users/qianfeng/Desktop/Plist/Plist/Dic.plist”];

        //NSLog(@”%@”,dic1);

        //请我们用代码达成这么些plist,用代码见那一个dictionary

        

        //第一步,写pic对应的数组

        NSArray *picArr = [NSArray
arrayWithObjects:@”XXX/pic1.png”,@”XXX/pic2.png”,@”XXX/pic3.png”, nil];

        

        //第二步,完毕mainData那个字典

        NSDictionary *mainDic = [NSDictionary
dictionaryWithObjectsAndKeys:@”news”,@”title”,@”home”,@”info”,picArr,@”pic”,
nil];

        

        //第三步,完毕总体字典

        NSDictionary *wholeDic = [NSDictionary
dictionaryWithObjectsAndKeys:mainDic,@”mainData”,@”1″,@”status”, nil];

        //NSLog(@”%@”,wholeDic);

        

        //遍历整个字典,写出每意气风发层是怎么样,有哪些内容

        //1、已经有了一个dic1的字典

        //2、找到这几个字典的根节点

        //3、找到根节点里面有稍许个key

        NSLog(@”dic1以此字典的根节点里面风姿浪漫共有%d个key”,[[dic1
allKeys] count]);

        //4、遍历每二个key所对应的内容,写出每叁个key的故事情节是怎么项指标

       
NSLog(@”status这么些key的原委是个字符串,mainData那些key的内容是个字典”);

       
//5、要是key的剧情是字符串,那么直接打字与印刷这几个key对应字符串的原委,假若是字典或数组,那么开首再度3的剧情

       
//大家以此字典三个key二个是status对应字符串,能够直接打字与印刷,另多少个mainData是个字典,要双重第三条职业

        NSLog(@”status 这个key 的value是 %@”,[dic1
objectForKey:@”status”]);

        //6、实行那些重复3的开始和结果的干活

        //我们这么些字典正是起初遍历mainData那些key

        //7、mainData那个字典有个别许个key

        NSLog(@”mainData这几个key 对应的字典里一同有 %d个key”,[[[dic1
objectForKey:@”mainData”] allKeys] count]);

        //8、打字与印刷直接key对应字符串的value

       
NSLog(@”mainData那个字典里title和info那五个key对应的value是字符串,pic这一个key对应的value是数组”);

        NSLog(@”title对应的value是%@”,[[dic1
objectForKey:@”mainData”] objectForKey:@”title”]);

        NSLog(@”info对应的value是%@”,[[dic1 objectForKey:@”mainData”]
objectForKey:@”info”]);

        //9、继续循环查找那二个是数组和字典的key

        NSLog(@”pic对应的value是%@那个数组”,[[dic1
objectForKey:@”mainData”] objectForKey:@”pic”]);

        //10、最终一条现实的数量的话

        for(NSString*tempStr in [[dic1 objectForKey:@”mainData”]
objectForKey:@”pic”])

        {

            NSLog(@”pic数组里面包车型地铁成分有%@”,tempStr);

        }

        

        //建一个plist文件,名字是plist

        //这几个plist文件根是字典

        //为这么些字典创设2个key,多少个是status,二个是content

        //status这个key的对应value类型是string,value是1

        //content这个key的对应value类型是array

        //content那一个key是数组,数首席实施官度是4

        //数组里每三个因素的品种都是dic

        //数组里这个dic的布局都近似,都有title、info、pic那么些key

        //title和info对应的value是字符串型,value自由发挥爱些吗写什么

        //pic的value类型是个数组

        //每一个数组皆有五个成分,分别是one1.png、one2.png

        

        //使用字典(plistDic卡塔 尔(阿拉伯语:قطر‎把这几个plist文件读出来

        NSDictionary *plistDic = [NSDictionary
dictionaryWithContentsOfFile:@”/Users/qianfeng/Desktop/Plist/Plist/plist.plist”];

        //请找到content这个key对应的value类型

        NSLog(@”content这些key对应的value类型是数组”);

        //数组里面存的每三个要素都以何许项目

        NSLog(@”content那一个key对应的value数组里面每一种元素都是字典”);

        //笔者想找到content数组的第叁个要素,用字典接

        NSArray *contentArr = [plistDic objectForKey:@”content”];

        NSDictionary *twoDic = [contentArr objectAtIndex:1];

        

        //小编想找到content数组第四个成分的info内容

        NSLog(@”info的value是字符串类型的”);

        //找到content这个key对应的value数组

        NSArray *contentArr1 = [plistDic objectForKey:@”content”];

        //在此个数组中找到第三个因素,是个字典

        NSDictionary *threeDic = [contentArr1 objectAtIndex:2];

        //在此个字典中找到info那些kei的value

        NSString *threeInfoStr = [threeDic objectForKey:@”info”];

        NSLog(@”threeInfoStr is %@”,threeInfoStr);

        

        //练习 找到数组中率先个要素的title那几个key的value

        

        //演练:做贰个plist(ArrPlist.plist),根是数组

        //数组有四个要素,每壹个要素都是字典

        //字典有多少个key,贰个是name,多个tel,一个是headView

       
//找到lily的联系情势,遍历数组,然后isequaltostring:lily,然后nslog该index的tel

        NSArray *contactArr = [NSArray
arrayWithContentsOfFile:@”/Users/qianfeng/Desktop/Plist/Plist/ArrPlist.plist”];

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

            if([[contactArr[i] objectForKey:@”name”]
isEqualToString:@”lily”]){

                NSLog(@”%@”,[contactArr[i] objectForKey:@”tel”]);

                break;

            }

        }

        for(NSDictionary *tempDic in contactArr){

            if([[tempDic objectForKey:@”name”]
isEqualToString:@”lily”]){

                NSLog(@”%@”,[tempDic objectForKey:@”tel”]);

            }

        }

    }

 

 

 

6、怎样把八个字典赋值给一个类的有所属性

 

/        //<1>系统对象归档

//        NSString
*[email protected]”jin
ri ni ke an hao?”;

//        NSArray *arr=[[NSArray
alloc]initWithObjects:@”shengming”,@”aiqing”,@”ziyou”,@”douyu”, nil];

//        

//        //对象归档archiver

//        //NSKeyedArchiver 特地用于对象归档的类

//        // 首个参数,应该填入一个归档文件的门道

//        NSString
*[email protected]”/Users/qianfeng/Desktop/info.data”;

//        BOOL b=[NSKeyedArchiver archiveRootObject:info toFile:path];

//        if (b) {

//            NSLog(@”archiver OK”);

//        }

//        

//        //<2>把目的从归档文件中读收取来 —-解档

//        NSString *readInfo =[NSKeyedUnarchiver
unarchiveObjectWithFile:path];

//        NSLog(@”readdInfo=%@”,readInfo);

        

        

//        //自定义对象的存档和平解决档(注重,难题)

//        Dog *dog=[[Dog alloc]init];

//        dog.name = @”xiaoHa”;

//        dog.age = 3;

//        

//        //把那几个狗—归档

//        NSString
*[email protected]”/Users/qianfeng/Desktop/dog.data”;

//        [NSKeyedArchiver archiveRootObject:dog toFile:path];

//        

//        //思考问题:  系统的目的为何能直接归档?

//        //要想让协调定义的靶子援助归档和平解决档

//        //  需求做两件专门的学问:

//        //  (1)遵守 NSCoding 协议

//        //  (2)完毕公约中的多个措施

//        //- (void)encodeWithCoder:(NSCoder *)aCoder;

//        //- (id)initWithCoder:(NSCoder *)aDecoder;

//        

//        //从文件中—解档出来这条狗

//        Dog *newDog=[NSKeyedUnarchiver
unarchiveObjectWithFile:path];

//        NSLog(@”name=%@,age=%d”,newDog.name,newDog.age);

        

 

 

7、6亟需潜心什么事项

 

 

 

 

八、协议、NSDate

1、怎么样创建一个磋商

 

 

//贰个研商由

/*

@protocol Work <NSObject>

 

@end

组成

 

@protocol是研究的名字的唤醒符

 

Work正是一个说道名 

 

<NSObject>跟在契约名的前面

 

@end是一个议和的终结

 

在protocol和end之间增添协商章程

*/

@protocol Work <NSObject>

 

-(void)drink;

 

@end

 

//左券创设实现,等待客人遵循

 

 

2、合同有怎么着分类

 

 

//当三个商谈是@optional的时候,大家又称这一个公约是业余磋商

@protocol Play <NSObject>

@required//那一个象征表示她上边包车型客车措施是必得完结的,私下认可叁个说道便是@required

-(void)sleep;

 

@optional//那个标识表示他下面包车型地铁方法是可筛选完结的

-(void)wakeUp;

 

3、怎么着遵循一个协议

 

#import “Work.h”//满含契约的头文件

#import “Play.h”

#import “DicManager.h”

 

@interface Test :
NSObject<Work,Play,DicManager>//在父类后用<>包涵二个磋商的商量名,表示大家现在此个类将坚守这些左券的内容,当信守四个商讨的时候,合同期间用逗号分隔

 

-(void)eat;

 

4、坚决守护了今后干嘛

 

 

 

九、内部存款和储蓄器管理

1、内部存款和储蓄器管理管的是怎么样

     //用一句话说,OC的内部存款和储蓄器管理,管理的是内部存款和储蓄器的援引计数(retainCount卡塔 尔(阿拉伯语:قطر‎

 

 

 

2、内部存款和储蓄器管理怎么管的

 

       
//OC的内存管理分为三种,后生可畏种是手动内部存款和储蓄器管理(MRC卡塔 尔(阿拉伯语:قطر‎,风流罗曼蒂克种是全自动内部存款和储蓄器管理(ARC卡塔 尔(英语:State of Qatar)

        

 

3、内部存款和储蓄器管理的反映是何等

 

   
//任何二个指标都得以调用retainCount方法来查看她眼下的引用计数,当越来越多如故要脑算

        

       
//今后str所指向的内部存款和储蓄器当使用了alloc的时候,每趟引用计数+1,所以以往str所指向的内存的引用计数是1

        

       
//当对一个目的开展了retain操作之后,这几个指标指向的内部存储器的援用计数会+1,所以今后str指向的内部存款和储蓄器的援用计数是2

        

       
//当三个对象指针所针对的内部存储器空间的援引计数当先0时,大家感觉那块内部存款和储蓄器是能够被引用的,

       
//当三个对象指针所指向的内部存款和储蓄器空间的引用计数等于0之后,这块内部存款和储蓄器空间就能够活动调用他的dealloc方法开展放飞(那几个操作不要求大家管理卡塔尔国

        

       
//当使用alloc,copy、new、retain那一个办法的时候,一块内部存款和储蓄器的引用计数会进展+1操作

        //当使用release操作的时候,一块内部存款和储蓄器的引用计数会进展-1操作

 

4、内存管理须求注意的事项

 

 

   //注意:一贯不要平昔调用[对象 dealloc];

    

    //思考:alloc release dealloc

    //release和dealloc有怎样分化,哪个释放内部存款和储蓄器

    /*

        1、release和内部存款和储蓄器释放未有直接关系,release的劳作是计数-1

        2、dealloc才是自由内存,计数为0的时候自动调用

    */

    

 

十、代理

1、代理有二个触发类和八个接受类

 

2、如何成立叁个触发类(合同、属性、方法卡塔 尔(英语:State of Qatar)

 

3、怎样贯彻一个触发类(方法、属性调用左券章程卡塔尔

 

4、怎么着成立贰个选拔类

 

5、怎么样促成四个采取类

 

6、接纳类是什么样与触发类联系的,需求注意什么(修饰符卡塔尔国

 

OC10天天津大学学纲 风度翩翩、类和目标1、什么是类? 同豆蔻梢头种对象的抽象就是类。 2、什么是指标?
世界上的任何事物都得以叫做对象,…

//NSArray ,NSDictionary

/*——–在本来就有字符串中服从所提交范围和长短删除字符——*/

-(void) getValue:(void *) value; 要传送的是积累那一个数值的变量之处

NSValue(对别的对象开展打包卡塔尔

以有个别字符串伊始或最终

[dictionary setObject:@”Four” forKey:@”4″];

[astring release];

NSLog(@”mutableArr==%@”,[mutableArr objectAtIndex:i]);

//Copy and sort

[astring release];

/*—————-从文件读取字符串:initWithContentsOfFile方法—————-*/

obj = [[oldArray objectAtIndex:i] copy];

[pool drain];

NSLog(@”Path:%@”,[absolutePath stringByAbbreviatingWithTildeInPath]);

[String1 appendFormat:[NSString stringWithFormat:@”, I will be adding
some character”]];

NSLog(@”filename:%@”,filename);

NSLog(@”string:%@”,string);

[array addObject:@”Four”];

NSMutableArray *mr=[NSMutableArray arrayWithCapacity:50];

//Copy

[str appendFormat:@”sdfsdf%d”,5];

[value getValue:&rect];

}

NSString *string1 = @”This is a string”;

NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:40];

NSLog(@”dictionary:%@”,dictionary);

NSDictionary *dic=[NSDictionary
dictionaryWithObjectsAndKeys:@”aaa”,@”a”,@”bbb”,@”b”,nil];

//- (NSEnumerator *)objectEnumerator;在此以前向后

NSMutableDictionary

NSCaseInsensitiveSearch:不区分朗朗上口写字符

NSArray *keyArr=[mutableDic allKeys];

for(id obj in oldArray)

NSLog(@”for in == %@”,string);

NSNumber *number;

}

*******************************************************************************************/

NSLog(@”String1:%@”,String1);

//飞速枚举

/*——————————–将NSRect放入NSArray中————————————*/

{

/*——–将已部分空符串换到其余的字符串——*/

*/

for(NSString *string in array)

//NSMutableArray *array = [NSMutableArray arrayWithObjects:

//删除字符串

实例方法要用前导减号(-卡塔 尔(阿拉伯语:قطر‎来开端证明

//- (id) initWithObjectsAndKeys;

int j = 2;

} NSComparisonResult;

NSValue *value;

*/

[dictionary setObject:@”One” forKey:@”1″];

//isEqualToString方法

NSLog(@”newArray:%@”, newArray);

//3、在以上办法中,升高速度:initWithString方法

//急速枚举

//NSFileManager *fileManager = [NSFileManager defaultManager];

/*******************************************************************************************

[mutableDic setObject:[NSNull null] forKey:@”fax”];

NSLog(@”newArray:%@”, newArray);

//制造字符串

NSLog(@”Extension:%@”,[Path pathExtension]);

self.dataArray = array;

NSString *fileName=@”aabbbcc”;

/*

NSString *string = [array componentsJoinedByString:@”,”];

NSString *astring = [[NSString alloc] initWithContentsOfFile:path];

//

NSLog(@”111== %@”,r);

[astring release];

-------------------

//-(void) deleteCharactersInRange:(NSRange) range;

NSLog(@”key== %@”,str);

NSEnumerator *filenum;

[array addObject:value];

NSLog(@”files:%@”,files);

//NSMutableString 可变字符串

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

//for(NSString *filename in direnum)

NSLog(@”array:%@”,array);

[array removeObjectAtIndex:1];

[dictionary setObject:@”Three” forKey:@”3″];

//NSOrderedDescending判断两对象值的高低(按字母顺序举行比较,astring02小于astring01为真)

//与实例方法相符,世襲对类方法也相仿适用

*******************************************************************************************/

/**

id object;

//从字符串分割到数组- componentsSeparatedByString:

//神速枚举

NSOrderedAscending=-1;

enumerator = [array objectEnumerator];

-(NSPoint) pointValue;

/*—————————创立数组——————————*/

/*******************************************************************************************

[ms appendString:@”aabbccdd”];

enumerator = [array reverseObjectEnumerator];

NSLog(@”int object value== %d”,num);

NSLog(@”————00000000000000000″);

//NSOrderedAscending剖断两对象值的轻重(按字母逐大器晚成举行相比,astring02大于astring01为真)

NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];

}

/*————————————创制字典————————————*/

[mutableArr addObject:@”bb”];

//从Array中提取

NSString *astring = [[NSString alloc] initWithCString:Cstring];

@”One”,@”Two”,@”Three”,nil];

if([dicStr isEqualToString:@”aaa”]){

//{

//将NSRect放入NSArray中

//NSMutableArray *array = [NSMutableArray arrayWithObjects:

if([thing1 isEqualToString:thing2]){

//- (void) addObject: (id) anObject;

}

NSString *astring = @”This is a String!”;

NSString *home;

NSString

NSEnumerator *enumerator;

@”One”,@”Two”,@”Three”,nil];

NSLog(@”String1:%@”,String1);

//id obj;

NSRange range;

//NSMutableArray *newArray = [[NSMutableArray alloc] init];

==:只看清指针数值,并非它们所针没有错剧情

从目录找寻扩张名称叫jpg的文书

options 是叁个位掩码,可以使用|增加选项标识

BOOL result = [astring01 isEqualToString:astring02];

NSLog(@”oldArray:%@”,oldArray);

BOOL result = [astring01 caseInsensitiveCompare:astring02] = =
NSOrderedSame;

[String1 deleteCharactersInRange:NSMakeRange(0, 5)];

}

//

//for(id object in files)

NSLog(@”result:%d”,result);

{

//4、用标准c创制字符串:initWithCString方法

NSString *path = @”astring.text”;

NSLog(@”i found %@”,thingie);

char string1[] = “string!”;

NSLog(@”array:%@”,array);

NSMutableString *String;

}

NSArray 是三个cocoa类,用来囤积对象的稳步列表。

//+(id) stringWithCapacity:(unsinged) capacity;
capacity:是给NSMutableString的二个提议,字符串的轻重并不局限于所提供的高低,那个容积仅是个最优值。

NSLog(@”astring:%@”,astring);

NSLog(@”astring:%@”,astring);

NSLog(@”height length ——“);

/*******************************************************************************************

/*————————————创设可变字典————————————*/

//增加路径

}

/*—————给数组分配体量—————-*/

数学调换为字符串

//可变字典

/*————-数组枚举—————*/

NSArray *array = [NSArray arrayWithObjects:

/*————–在数组末尾增多对象—————-*/

NSString *dicStr=[dic objectForKey:@”a”];

/*

/*—————-写字符串到文件:writeToFile方法—————-*/

for(NSString *string in mutableArr){

*******************************************************************************************/

//NSMutableArray *array = [NSMutableArray arrayWithObjects:

[newArray release];

isEqualToString
:可以用来相比选择方和充当参数字传送递来的字符串的从头到尾的经过是或不是意气风发致,再次来到yes和no

[newArray release];

//从数组合并成分到字符串- componentsJoinedByString:

NSLog(@”String1:%@”,String1);

//删除 -(void) removeObjectForKe:(id) key;

value = [NSValue valueWithBytes:&rect objCType:@encode(CGRect)];

NSString *astring = [[NSString alloc] initWithString:[NSString
stringWithFormat:@”Location:%i,Leight:%i”,location,leight]];

//NSMutableArray *newArray = [[NSMutableArray alloc] init];

NSLog(@”array:%@”,array);

NSLog(@”string1:%@”,[string1 uppercaseString]);//大写

BOOL result = [astring01 compare:astring02

NSDirectoryEnumerator *direnum;

}

//NSOrderedDescending判定两对象值的尺寸(按字母顺序举行比较,astring02小于astring01为真)

//————切分数组

/*—————在原来就有字符串前面增多字符—————-*/

//stringWithCapacity:

NSLog(@”string2:%@”,string2);

}

NSLog(@”newArray:%@”, newArray);

NSMutableArray *newArray = [[NSMutableArray alloc] init];

NSLog(@”array:%@”,array);

NSLog(@”array:%@”,array);

*/

[astring release];

NSLog(@”joined—= %@”,joinedStr);

*******************************************************************************************/

//deleteCharactersInRange:

height=[NSString stringWithFormat:@”you heigh is %d feet,%d
inches”,5,11];

//可变数组

NSString *thing1=@”hello”;

/*—————-退换字符串的高低写—————-*/

NSString *astring02 = @”This is a String!”;

//NSMutableArray *newArray = [[NSMutableArray alloc] init];

fax=[mutableDic objectForKey:@”fax”];

//用C比较:strcmp函数

}

类措施能够用来拜访全局数据。

//将NSString 转化为NSData

@”a”,@”b”,@”c”,@”d”,@”e”,@”f”,@”g”,@”h”,nil];

CGRect rect = CGRectMake(0, 0, 320, 480);

//-(NSEnumerator *) objectEnumerator;

//SString 是不可变的,风流洒脱旦NSString 被创立了,我们就无法改善它。

//-(id) objectAtIndex:(unsigned int) index; 拿到索引地点的指标

+(NSValue *) valueWithSize:(NSSize) size;

objective-c运维时生成一个类的时候,它会创立一个意味此类的类对象。类对象包罗了指向超类的指针,类名,和指向类方法列表的指针。类对象还蕴藏四个long型数据,为新创制的类实例对象钦赐大小(以字节为单位卡塔 尔(英语:State of Qatar)

//-componentsSeparatedByString:

NSLog(@”componentsSeparatedByString===%@”,[comArr objectAtIndex:i]);

/*

NSLog(@”astring:%@”,astring);

NSLog(@”String1:%@”,String1);

range=[ms rangeOfString:@”cc”];

NSEnumerator *enumerator;

NSString *Path = @”~/NSData.txt”;

//Deep copy

[_display
deleteCharactersInRange:NSMakeRange(index_of_char_to_remove, 1)];

*/

//-(unsigned) count; 得到满含对象的个数

//2、创立空字符串,付与赋值。

if([height length]>5){

enumerator = [oldArray objectEnumerator];

}

MutableArray = [NSMutableArray arrayWithArray:array];

for(int i=0;i<[mutableArr count];i++){

NSLog(@”MutableArray:%@”,MutableArray);

NSLog(@”astring:%@”,astring);

NSString *string1 = @”A String”;

-(NSString *) stringValue;

//5、创立格式化字符串:占位符(由一个%加叁个字符组成卡塔 尔(英语:State of Qatar)

NSString *astring01 = @”This is a String!”;

NSArray *oldArray = [NSArray arrayWithObjects:

NSLog(@”they are same”);

NSString *ns=@”sdf,dsfs,dfd,fdf,df,dd”;

类方法:

/**

//NSArray *array = [[NSArray alloc] initWithObjects:

/*—————-相比较四个字符串—————-*/

//删除三个对象之后,数组中并未留下漏洞,被剔除对象后边的数组成分的啊被前移来增加补充空缺

//NSValue .NSNumber实际上是NSValue的子类,NSValue可以打包任意值

NSMutableString

NSLog(@”== same”);

[dictionary removeObjectForKey:@”3″];

if(strcmp(string1, string2) = = 0)

typedef enum _NSComparisonResult{

NSNumericSearch]==NSOrderedSame){

[str appendString:@”ssssssss”];

//NSArray *array1 = [[NSArray alloc] init];

//    }

(NSString.h)

通过格式字符串和参数来创建NSString

/**

compare将接纳指标和传递来的字符串每个字符的展开比较,它回到多个NSComparisonResult(枚举类型)来显示结果。

-(int) intVlaue;

@”One”,@”Two”,@”Three”,nil];

[astring release];

-(char) charValue;

NSString *astring01 = @”This is a String!”;

//arrayWithArray:

NSMutableString *String1 = [[NSMutableString alloc]
initWithString:@”This is a NSMutableString”];

char string2[] = “string!”;

NSLog(@”object:%@”,object);

/*—————-在串中找出子串—————-*/

/**

{

NSLog(@”pppppppppppppppppp”);

NSString *thing2=[[NSString alloc] initWithString:@”hello”];

[newArray release];

BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;

NSEnumerator *enumerator;

//-substringWithRange:
//依据所提交的职位,长度,狂妄地从字符串中截取子串

while (object = [enumerator nextObject]) {

NSString *astring02 = @”This is a String!”;

NSString *astring02 = @”This is a String!”;

那注脚方法时增加加号(+卡塔尔国,那么那几个点子为类方式,不须求创制实例就能够调用,平时用于创建心的实例,大家称用来成立新指标的类方式为工厂方法。

//        [files addObject:filename];

value=[NSValue valueWithBytes:&rect objCType:@encode(NSRect)];

//01:检查字符串是或不是以另四个字符串起首- (BOOL) hasPrefix: (NSString *)
aString;

*******************************************************************************************/

NSLog(@”self.dataArray cound 2:%@”,[self.dataArray objectAtIndex:2]);

id fax;

}

NSLog(@”result:%d”,result);

//compare方法(comparer重返的三种值)

}

[String1 setString:@”Hello Word!”];

{

return 0;

传送的参数是您想要包装的数值的地址,平时,获得的是您想要存款和储蓄的变量的地点(在c语言里适用操作符
&
卡塔 尔(英语:State of Qatar),你也得以提供三个陈诉那么些数据类型的字符串,日常用于表明struct中实体的档案的次序和分寸。你不用自身写代码

//不考虑大小写相比字符串1

//-substringFromIndex:
以钦赐地点上马(包含内定地点的字符卡塔 尔(英语:State of Qatar),并包蕴现在的全套字符

NSString *astring02 = @”This is a String!”;

//}

NSLog(@”absolutePath:%@”,absolutePath);

**/

BOOL result = [astring01 compare:astring02] = = NSOrderedSame;

NSLog(@”1″);

//枚举

发表评论

电子邮件地址不会被公开。 必填项已用*标注