zoukankan      html  css  js  c++  java
  • 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)对象调用方法的标志。

  • 相关阅读:
    内容可编辑且随内容自增长的div
    05-图1. List Components (25)
    多button事件处理
    NYOJ 496 [巡回赛-拓扑排序]
    Android lollipop 更新问题
    编程算法
    Codeforces Round #337 (Div. 2) 610B Vika and Squares(脑洞)
    java中的ShortBuffer
    Rust hello world 语法解说
    在.Net MVC结构API接口中推断http头信息实现公共的权限验证过滤器演示样例
  • 原文地址:https://www.cnblogs.com/ytmaylover/p/5049195.html
Copyright © 2011-2022 走看看