Objective-C 几个特殊的数据类型

来源:互联网 发布:淘宝卖衣服技巧 编辑:程序博客网 时间:2024/06/11 14:29

专心记笔记。。


1、函数指针

        void (*point)()=t1;
        point();
        int (*point1)()=t2;
        point1();             //其中t1  t2都是函数  int和void都是对应函数的放回类型

2、block  与指向函数的指针类型比较像
         void (^myBlock)()=^{NSLog(@"I am block!");};
          myBlock();
        block就是弥补了指向函数的指针不能直接保存一个代码块,调用方式和指向函数的指针式一样的
      *代表指针 ^代表block

      复杂点的block

         //如果想要改变,block代码块之外的变量值,就必须在变量前加入
        //__block关键字
        __block int x = 0;
      int (^sumBlock)(int a, int b) = ^int (int a, int b) {
            
            int result = (a * b);
            x = result;
            return result;
        };

     结合typedef 定义
    typedef int (^calculate)(int a,int b);    

    可以讲block 当一个参数传进方法

    -(int) doSomeThing:(calculate) cal   numA:(int) a numB:(int) b

   {

         return cal(a,b);

   }

3、SEL数据类型是用来包装方法的
       SEL s1 = @selector(eat);  //eat  是一个方法
        
        [p performSelector:s1];   //p是一个对象 
        
        SEL s2 = @selector(call:);  //有参数的例子
        
        [p performSelector:s2 withObject:@"135xxxxxx"];








0 0
原创粉丝点击