最簡單的IOS Block與協議 延展

2021-08-04 21:19:43 字數 1485 閱讀 9140

1). 是1個特殊的分類. 所以延展也是類的一部分.

2). 特殊之處:

a. 延展這個特殊的分類沒有名字.

b. 只有宣告沒有實現.和本類共享1個實現.

語法:@inte***ce 本類名 ()

@end

沒有實現. 和本類共享1個實現.

只有1個.h檔案. 檔名稱: 本類名_取得檔名.h

這個檔案中只有延展的宣告.

@inte***ce person ()

@end

1). 延展的本質是1個分類. 作為本類的一部分.

只不過是1個特殊的分類

沒有名字.

2). 延展只有宣告,沒有單獨的實現. 和本類共享乙個實現.

1). 分類有名字.延展沒有名字 是1個匿名的分類.

2). 每1個分類都有單獨的宣告和實現. 而延展只有宣告 沒有單獨的實現 和本類共享1個實現,

3). 分類中只能新增方法. 而延展中任意的成員都可以寫.

4). 分類中可以寫@property 但是只會生成getter setter的宣告.

延展中寫@property 會自動生成私有屬性 也會生成getter setter的宣告和實現.

1). 要為類寫1個私有的@property.

生成getter、setter方法只能在類的內部訪問 不能在外部訪問.

其實,我們可以想: @property生成私有屬性、生成getter setter的實現,不要宣告.

2). 延展100%的情況下不會獨佔1個檔案. 都是將延展直接寫在本類的實現檔案中.

這個時候,寫在延展中的成員,就相當於是這個類的私有成員.只能在本類的實現中訪問.

外部不能訪問.

3). 什麼時候使用延展?

當我們想要為類定義私有成員的時候,就可以使用延展. 將延展定義在這個類的實現檔案中.

如果想要為類寫1個真私有屬性,雖然我們可以定義在@implementation之中.但是不要這麼寫 這樣很不規範.  

寫1個延展.將這個私有屬性定義在延展中.

如果要為類寫1個私有方法,建議將宣告寫在延展中, 實現寫在本類的實現中. 提供**的閱讀性

如果想要為類寫1個私有的@property 就直接寫在延展就可以了.

4). 延展天生就是來私有化類的成員的.

如果類的成員只希望在類的內部訪問,那麼就將其定義在延展中.

如果類的成員允許被外界訪問 定義在本類的@inte***ce中.

iOS block的簡單說明

一 先用xcode建立乙個空工程。1 block之前先用弄懂c語言的函式指標,看 typedef int sump int,int 用typedef定義乙個block型別 void test int sum int a,int b int main int argc,const char argv ...

最簡單的TCP協議實現

在客戶端方面 服務端 include include include include include include include include include include using namespace std class tcpserver 初始化 void initserver 進行繫...

iOS block塊傳值的簡單使用 2

我們在專案中常用到的傳值方式無外乎是這三種 1.傳值.2.block 傳值.3.通知.因為 block 傳值使 看上去更加簡潔明瞭 書寫起來也更加的簡便 所以深受大家喜愛 今天我們就來整理下 block 傳值的簡單使用 在各種論壇也看到很多大牛們對 block做了很詳細的解釋,從 block 的深層...