苹果开发文档 Block

1.苹果开发文档概要:

  整个文档界面有左侧的侧栏和右面的内容区域构成。左面的侧栏可以选择不同的文档库,一般来说有一组不同版本的IOS文
  
  档库、一组不同版本的OSX文档库,以及一个Xcode文档库。

2.NSnumber的用法:

  NSnumber的父类是NSValue, 
  
  NSNumber *intNumber = [NSNumber numberWithInt:number];  
  
  //还原成基本数据类型  
  
  int month = [intNumber intvalue];
  
3.初识block

   Block是iOS在4.0之后新增的程序语法,在使用block时,我们首先要^这个符号来定义这个block这个变量,而且要在blo
   
   ck的最后面加上;以表示这是一个完整的语句。
   
   BLock 提供我们一种能够将函数程式代码嵌在一般陈述句的方法。
   
   Block与函数的相似性:可以保存代码 有返回值  有形参  调用方法一样
   
   下面就是定义一个block      int(^myBlock)(int) = ^(int num){return num;};
   
   下面解释一下这个语句的意思:
   
   首先我们定义一个myBlock的变量,用^符号来说明这是一个block的变量 这个叫脱字符,是块的语法标记。
   
   加上()表示这是block的完整定义
   
   最前面的int表示这个block类型是一个返回值为整形的(int)的block.
   
   后面的(int)表示它有一个参数,参数的类型是整形,这个变量的名可以不写。
   
   ^(int num)表示这个参数的名字叫做num;
   
   {}后面的就是block的内容。
   
   int(^myBlock)(int)这样写得话感觉很麻烦,所以我们可以宏定义在开头:typedef int(^myblock)(int);
   
   然后在下面就可以写成 myblock num = ^(int num){return num;};
   
   如果你想修改block里面的局部变量的值,
   
   直接修改是不可以的,前面必须加上__block 例如修改上面的num __block int num = 10;
   
   但全局变量却可以直接修改。
   
 3.应用block对数组进行排序
 
   NSArray *arr = [NSArray arrayWithObjects:@"a10",@"a32",@"a89",@"a21",nil];  
   
   //首先是apple自带的方法进行排序
   
   NSArray *arr1 - [arr sortedArrayUsingSelector:@selector(compare:)];
   
   //将这个方法封装成block块
   
   NSArray *temp = [arr sortedArrayUSingComparator:^NSComparsionResult(NSString obj1,NSString obj2)]
   {
      if([obj1 compare: obj2] == NSOrderedDescending)
      {
         return NSOrderedDescenfing;
      }
      
      else if([obj1 compare: obj2] == NSOrderedAscending)
      {
          return NSOrdenedAscending;
      }
      else
      {
          return NSOrderedSame;
      }
   }
   
   //这个方法也可以,将block分开写:
   
   NSComparator sortBlock = ^(id string1, id string2)
        {
            return [string1 compare:string2];
        };
   
    NSArray *sortArray = [stringArray sortedArrayUsingComparator:sortBlock];
    
    NSLog(@"sortArray:%@", sortArray);


你可能感兴趣的:(苹果开发文档 Block)