OC Foundation框架和多线程小结

来源:互联网 发布:淘宝手机端删除评价 编辑:程序博客网 时间:2024/04/28 19:55

一、Foundation框架

 <一>NSString 字符串的使用

    1.NSString对象,一旦创建,就不可以进行再改变,如需要一个可以更改的字符串对象,需要创建NSString的可变子类NSMutableString实例。

2.字符串的创建

2.1创建一个字符串常量: NSString *string=@”this is NSString”;

2.2创建一个空字符串:

NSString *string=[[NSString alloc]init];

NSString *string=[NSString string];

   3.快速创建字符串

   NSString *string=[[NSString alloc]initWithString:@“字符串”];

   NSString *string=[NSString stringWithString:@”字符串”];

4.创建格式字符串   initWithFormat  , stringWithFormat 方法

    5.小注意

       常量没有引用计数,常量创建的字符串无需要管理内存

6.比较两个字符串

6.1 “==”表示比较两个字符串的地址是否相同;

    eg:    if(string1== string2){  //code...

            }

6.2 ”isEqualToString”表示比较两个字符串的值是否相同;

     Eg : if(string1 isEqualToString:string2){   //code....

         }

   6.3 通过类方法创建字符串(不需要管理内存的)

NSString *string=[NSString stringWithCString:“abc“ encoding:

NSUTF8StringEncoding];

6.4通过实例方法创建字符串(需要手动管理内存)

  NSString *string=[[NSString alloc]initWithFormat:@””];

6.5 通过追加的方式创建字符串  stringByAppendingString 方法

6.6 NSComparisonResult re=[string1  compare:string2];  //按字母排序进行比较

7截取字符串

  7.1通过类方法:substringFormIndex:下标   //从指定的位置截取到末尾

  7.2substringToIndex:下标    //从开始位置截取到指定的下标位置

  7.3截取指定位置(NSRange (loation ,length))

          Eg: NSRange rg={4,5};   //表示从4的位置开始,截取5个长度

          等价于 NSRange rg=NSMakeRange{4,5};

         //调用截取方法   [string1  substringWithRange: rg];

          rangeofstring   //得到字符串的位置

   8.大小写之间的转换

8.1 大---> 小        lowercaseString方法

8.2小----->大        uppercaseString方法

   9.判断字符串

9.1判断字符串的开头是否与指定的字符串相同    hasPrefix方法

9.2判断字符串结尾是否与指定字符串相同     hasSuffix 方法

9.3忽略大小写进行比较  caseInsensitiveCompare

    if([str1 caseInsensitiveCompare:str2 ]==NSOrferedsame){ //

}

10.分割字符串

10.1通过指定的字符串进行分割  componentsSeparatedByString 

NSArray *array=[string1 componentsSeparateByString:@”z指定的字符串”];

10.2通过指定的字符集进行分割(空格、换行)

 

NSArray *array=[string1                                                        componentsSeparatedByCharactersInset:                      NSCharacterSetEhitespaceAndNewlineCharacterSet]];

10.3通过指定的字符将数组组合成字符串

NSString *str=[array componentsJoinedByString :@”**”;

       11.替换字符串

         11.1替换指点字符串

          NSString *str=[str1 StringByReplacingOccurrenxesOfString:@"要替换的字符串" withstring :@"替换后的字符串"];

         11.2替换指点位置的字符串

         NSRange myRange=[str rangeOfString:@"字符串"];

         if(myRange.laction==NSNotFound){

                 //code.....

          } else

          {

           NSString *str=[String1 StringByReplacingcharactersInRange:myRange   withstring:@"替换字符串"];

         }

     12.数据转换

          NSString *str=@"100";

          int intNum=[str intValue];

          Float floatNum=[str floatValue];

13.可变字符串NSMutableString

   13.1.如何创建一个可变字符串

  NSMutableString *str=[[NSMutableString alloc]initWithCapacity:0];

   13.2.重新设置   setString

   13.3 根据下标插入字符串  insetString:@" " atIndex:下标值

   13.4 删除指定位置的字符串

   NSRange ge=NSMakeRange(4,5);

   [string1 deleteCharactersInRange:ge];

<二>数组(NSArray)

   1.通过类方法定义数组(无需管理内存),nil表示数组的结束

arrayWithObject:......,nil  ;

    2.通过初始化方法定义数组

   initWithArray    (通过数组创建数组)

   initWithObject    (通过对象创建数组)

  3.如何操作数组

   3.1根据下标获取数组的元素

   objectAtIndex:下标

   3.2通过元素获取对应的下标

    indexOfObjects:@"字符",返回NSInteger

   3.3获取最后一个元素:lastObject

   3.4获取数组的长度:count

  4.循环操作数组

   4.1通过枚举

    NSEnumerator  *enu=[arry1 objectEnumerator];

    id obj;

    While((obj==[enu nextObject]))

    {

        //code.......

    }

   4.2循环    for

   4.3 for in

   for(NSString *str in array)

   {

       //code.....

   } 

  4.4反转枚举 reverseObjectEnumerator

  4.5排序

   sortedArrayUsingSelector:@"selector(compare)" 

5.可变数组(NSMutableArray)

      5.1添加元素(末尾) addObject:

      5.2插入元素

      [array1 insertObject:@" " atIndex:下标];

      5.3移除元素

      根据下标移除元素:removeObjectIndex:

      移除最后一个元素:removeLastObject:

      5.4替换元素(根据下标替换)

      replaceObjectAtIndex:下标    withObject:@"替换的字符串";

      通过下标交换:exchangeObjectAtIndex: j   withObjectAtIndex:j+1;

      5.5查找

      containsObject:@"要查找的字符";

<三> 字典(NSDictionary)

1.如何创建字典?

     NSMutableDictionary *dictionary=[NSMutableDictionary  dictionaryWithCapacity: 个数];

  dictionaryWithObjectsAndKey    将元素添加到字典中

2.如何操作字典?

2.1通过键得值 objectForKey

2.2 设置字典(设置没有的键是添加,反之修改)

   setObject:@"  "  forKey:@" "

2.3移除指定键值数据     removeObjectForKey

    移除所有的数据       removeAllObjects

2.4 得到字典的个数   count

2.5 循环字典

   2.5.1  通过枚举  keyEnumerator / ObjectEnumertor 

   2.5.2  通过数组 NSArray *array=[ dic allkeys];   /allValues

          根据键获取值:objecForKey

<四> NSDate、NSDateFomatter

1.NSDate  日期

NSDate *date=[NSDate date];    //得到的是美国时间

通过dateByAddingTimeInterval:8*60*60; 得到北京时间

timeIntervalsinceNow  //得到两个日期的时间间隔(秒)

[date1 earlierDate:date2]  //比较两个日期 返回较早的日期

[date2 lateDate:date2]  //返回较晚的日期

2.NSDateFomatter   日期格式器

     //创建一个日期格式器

     NSDateFomatter *fmt=[[NSDateFormatter alloc ]init];

     //设置时间格式

     [fmt  setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

//设置日期的样式

 [fmt  setDateStryle:NSDateFormattermediumstyle];

//设置时间的样式

     [fmt  setTimeStyle:NSDateFormattershortstyle];

//将日期对象转换为字符串

NSString *dt=[fmt StringFromDate:date ];

//将字符串转换为日期对象    dateFromString

<五>NSNumber   OC的数字类型(对C数据类型的一个封装)

      1.将C语言--->OC

       NSNumber ×intNum=[NSNumber  numberWithInt:100];

      2.将OC--->C

      int  num=[intNum intValue];

      将C语言的int 型存放到数组中的话,运行时将出错的,内存错误,找不到C语言的内存。

       3.判断一个字符串是否是由数字组成

        NSString *str=@"10030";

        //用于存字符串扫描指点字符

        NSScanner *scan=[NSScanner scannerWithString:str1];

        int val;

       BOOL fg=[scan  scanInt:&val ]&&[scann isAtEnd];

   <六> NSNull 空/nil

        NSNull  *nl=[NSNull null ];

      在数组中要赋空值时,运用NSNull对象,而nil表示结束。

      NULL和nil就是0,nil是一个通用对象值,而NUll是一个通用指针。

  <七>NSData 字节类

       1.创建 path

       2.将文件读入data对象    initWithContentsofFile:path;

       3.data对象转换为字符串  initWithData:data ;

       4.将字符串转换为data    [string dataUsingEncoding:  ];

   <八>NSTimer  定时器

       NSTimer *timer=[NSTimer scheduledTimeWithTimeInterval: 1.0  target:self  selector:@selector(方法)  userInfo:nil   repeats:YES];

      //参数的说明:TimeInterval 时间间隔的秒数

                    target:操作的目标

                    selector:定时器执行的操作

                    userInfo:参数

                    repeats:是否重复

        //停止 [ timer invalidate];

        //销毁定时器  timer=nil;

 二、多线程

1.如何创建一个自动线程

   [NSThread delachNewThreadSelector:@selector(方法)  toTarget:selef  withObject:@””];

2.创建一个手动的线程

  NSThread *thread=[[NSTread alloc ]initWithTaget:self selector:@selector(runTread) object:nil ];

  启动线程:start

  休眠:sleepForTimeInterval: 1    (秒)类方法

  取消线程:release

  设置线程的名称:setName

  得到当前的线程:currentThread

3.锁对象  NSCondition

  创建一个锁对象;NSCondition *cond=[[NSCondition alloc]init];

  上锁操作: [ cond lock];

  解锁: [ cond  unlock];

4.创建线程,在后头执行选择器方法

   [self performSelectorInBackfround:@selector( 方法)  withObject:nil];

   [ self performselectorOnMainThread:@selector(方法)  withObject:nil  waitUntilDone:YES ];    //主线程方法

5.线程池

  5.1创建一个线程池

  NSOperationQueue *queue=[[ NSOperationQueue alloc ]init];

  5.2创建一个子线程

  NSInvocationOperation *invocation=[[ NSInvocationOperation alloc]initwithTarget:self  selector:@selector(方法名) object:nil ];

  //将子线程添加到线程池,线程池将自动的启动该线程

  [ queue  addoperation:invocation ];

  //销毁对象

  [ queue  release];

  [invocation release];

原创粉丝点击