天天看點

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主要是增加類的成員變量和方法,并且讓其轉為私有。

繼續閱讀