OC6-block-函数指针

目标: 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)对象调用方法的标志。

转载于:https://www.cnblogs.com/ytmaylover/p/5049195.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值