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

来源:互联网 发布:mac安装win8系统网卡 编辑:程序博客网 时间:2024/06/11 20:26

    

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


0 0