OC基础学习——Block语法的学习和Category与Extension的初步认识

    

一、Block语法介绍

        // 1.定义一个Block变量

        

        // 1.1定义一个返回值为void,没有形参

        

        void (^myBlock) (void); // 定义变量

        

        // 给这个变量赋值

        myBlock = ^(void)

        {

            NSLog(@"这是我自己定义的Block的语法");

        };

        

        // 使用

        

        myBlock ();

        

        

        // 1.2 定义一个有返回值的而且带有形参的block

        

        int (^myBlock1) (int,int); // 首先定义

        

        myBlock1 = ^(int a,int b)

        {

            return a+b;

        }; // 后面一定要加分号,因为这是语句

        

        

        NSLog(@"%d",myBlock1(2,3)); // 调用myBlock1语法

        

        

        // 1.3 tydef来定义 其形式为 typedef <#returnType#>(^<#name#>)(<#arguments#>);

        

        newBlock result ; //.定义

        

        result = ^(int a,int b)

        

        {

            return  a+b;

        }; // 封装

        

        NSLog(@"%d",result(5,6)); // 调用

        

        

        // Block 数据类型的特点

        

        int a = 10;

        

        __block int b = 5;

        

        void (^tryBlock)() = ^{

        

            NSLog(@"a=%d",a); //.1block内部能访问外面的的局部变量

            

            b = 6; // 如果要修改外面的局部变量,外部的变量要用__block修饰

            

            NSLog(@"b=%d",b);

            

            

        };

        

        tryBlock() ;


二、Category与Extension


1.Category主要是用来为类增加方法而使用的,能访问类的成员变量,但不能增加很修改成员变量,当Catagory的方法与类的方法重名时,Catagory的优先级别高于类。


2.Extension主要是增加类的成员变量和方法,并且让其转为私有。


你可能感兴趣的:(oc语言,Block类型,Category,Extension)