码迷,mamicode.com
首页 > 其他好文 > 详细

OC6-block-函数指针

时间:2015-12-15 19:30:32      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

目标: 1.通过类中的方法进行排序

       2block-函数指针,

      3.通过block实现数组的排序

1.自定义类在数组中的排序:

 (1)在自定义类中声明实现一个方法,方法的返回值是bool类型,意思是是否进行元素的交换

 (2)在main中调用这个方法

 (3)在数组中,@selecter 是方法选择器,在指定的对象中,寻找指定的方法。

                          返回值是布尔类型,判断是否交换,必须有且只有一个参数。

                         参数的类型是自身类型,参数的代表的是它在数组中的下一个元素。

      //    [arr1 sortedArrayUsingSelector:@selector(compare:)];

2.block:

 (1)匿名函数:

 (2)标c没有block,是后续的版本扩展才有的。

  (3) block的一个特定就是灵活性。block允许在函数中写一个代码段,类似声明一个函数。

 block块,很多的语言里面都有,oc也加上了,在个别领域使用较多,block的用法和函数指针相似,

 回顾函数指针:具有特定功能的代码块,返回值,函数名,参数列表,匿名函数,只有返回值和参数列表,

      函数指针的返回值是int ,函数指针的名字是p,(*)是标志着p是一个函数指针,函数指针的参数列表是(int,int);

 3.block的语法

 block的声明:int (^b)(int,int) = ^ int (int a int b){ return 1;};

 void (^b1)(int int) = ^ void (int a,int b){ nsl@(@"jfdhjf ");};

 int (^b2)() = ^int () { return 13;};

 4.block与作用域。 4.block的调用

 block中允许写一代码段,类似声明一个函数,在使用中有可能设计变量的作用域,(全局,局部)。

 (1).block中是可以随意修改全局变量的,没有任何影响,但是不安全。

 (2)默认的局部变量在block中受保护,不能修改,若要修改,需在局部变量类型修饰符前添加‘__block’。两个下划线。

 6.对block 别名定义:typedef int (^MYBLOCK)(int ,int );

 7.数组排序和block。

 (1)系统自带的。

 (2)自定义的排序:

//    NSMutableArray *a1=@[@"123",@"234",@"244",@"108",@"118"].mutableCopy;

//    [a1 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {

//        if ([obj1 intValue] >[obj2 intValue]) {

//            return YES;

//        }

//        else return NO;

//    }];

 8.字面量

(1)字典的字面量--NSMutableDictionary dic1=@{@"key1":@"value1",@"key2":@"value2"};

 (2)数组的字面量--NSArray a1=@[@"zhangsan",@"lisi",@"wangwu",@"zhaolu"];

 (3)字符串的字面量---NSString=@"this is a sting";

 (4)NSNumber的字面量-- NSNumber *num=[NSNumber alloc]initwithInt:12 ]  >>>>num=@(12)

 (5)一个符号多个意义,

9.[]的作用:

  1)是数字的字面量,

  2)数组的访问语法糖,

  3)是字典的访问语法糖

  4)对象调用方法的标志。

OC6-block-函数指针

标签:

原文地址:http://www.cnblogs.com/ytmaylover/p/5049195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!