天天看点

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主要是增加类的成员变量和方法,并且让其转为私有。

继续阅读