精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

ios開發block,iOS開發block可以用strong嗎

IOS開發 為什么要用block

我認為block主要是替代selector。對于一個包含少量代碼的方法可以放到一個block中而不用重新定義個方法,增加代碼的可讀性。

成都創新互聯公司是一家專注于成都做網站、成都網站建設與策劃設計,平武網站建設哪家好?成都創新互聯公司做網站,專注于網站建設十載,網設計領域的專業建站公司;建站業務涵蓋:平武等地區。平武做網站價格咨詢:13518219792

比如通知中心(NSNotificationCenter)事件的回調(addObserver)可以指定一個函數,也可以直接用block,(@selector或者usingBlock^),如果只要執行簡單的幾句代碼,就可使用后者,省去新定義一個方法的麻煩。

不過使用block時需要注意一些問題,尤其引用計數的問題會導致一些東西不能正常釋放,具體需要多看些資料。

跟delegate沒什么關系。

ios中block的三種形式

Block有三種類型:

我們在講 block的本質 的時候已經知道了,block的本質就是一個 OC 對象,那么既然它是一個 OC 對象,它就會有類型,本文就將講解 block 的三種類型.并都繼承于NSBlock

我們在講 block 的三種類型之前,先了解一下程序的內存分配情況,因為不同類型的 block 分配的內存也不同.

結論: 沒有訪問 auto變量 的block 就是 __NSGlobalBlock

結論:訪問了auto變量 的block 就是 __NSStackBlock

怎么打印的是 NSMallocBlock ,剛才不是說訪問了auto變量就是__NSStackBlock嗎?

因為這里我們使用的是ARC,在ARC環境下,Xcode編譯器再某些情況會默認幫我們做調用copy 變成堆block ,我們在Build Settings中把ARC設置成MRC,再來打印一下:

這次打印的就是 NSStackBlock

我們思考一下,__NSStackBlock在訪問外部變量時,會有什么問題?

會出現野指針crash 所以在ARC壞境Xcode幫我們處理成了堆block( NSMallocBlock )防止出現釋放了還去訪問導致野指針crash

結論: 當一個__NSStackBlock調用了copy操作,返回的就是一個__NSMallocBlock

以上都是在MRC環境下

如果是在ARC環境下,編譯器會根據情況自動將棧上的block復制到堆上 , 比如以下幾種情況:

1:一共有三種類型的Block.分為__NSGlobalBlock,__NSStackBlock,__NSMallocBlock.

沒有訪問 auto變量 的block 就是 __NSGlobalBlock

訪問了auto變量 的block 就是 __NSStackBlock

當一個__NSStackBlock調用了copy操作,返回的就是一個__NSMallocBlocksing

2:在ARC環境下,編譯器會自動把棧上的block copy到堆上

IOS開發 什么是block?如何聲明一個block?舉例說明!謝謝大神們

block是一個代碼塊,比如一些其它Web編程語言中的“匿名函數”。在objc中通常使用block實現代理方法實現的功能,也就是回調。使用代理需要設置代理的數據接收者,而且代理方法是被分離開來處理的,block可以將這些分離的代碼放到一個代碼塊中。

/////////.h

typedef void(^MyBlock)(int value);

@property (nonatomic,weak) MyBlock block;

-(void)setMyBlock:(void(^)(int value)) block;

/////////.m

-(void)setMyBlock:(void(^)(int value)) block {

if (block) {

self.block=block;

}

}

iOS開發中將block作為參數、屬性使用

開發中使用block進行回調傳遞消息、傳遞參數還是很方便的。

1.使用一個網絡請求工具進行某個頁面的網絡數據請求,在數據請求下來之后使用block回調,將請求下來的網絡數據返回給某個頁面使用。

2.點擊自定義的UITableViewCell上的一個按鈕,使用block回調,讓我們知道點擊的是哪個cell。

1.將block作為參數使用

2.將block作為屬性使用

下面直接看圖:

block如果作為參數使用,那么我們既可以在對象方法中使用block,也能在類方法中使用block。如果沒有必要創建對象,那就直接使用類方法。

****本篇文章到這里就結束了,愿大家加班不多工資多,男同胞都有女朋友,女同胞都有男朋友。????***


當前標題:ios開發block,iOS開發block可以用strong嗎
瀏覽路徑:http://m.jcarcd.cn/article/dsdsdji.html
主站蜘蛛池模板: 国产永精品亚洲精品 | 午夜国产一区 | 国产精品女 | 九七电影网在线 | 九色国产精品在线 | 露脸国产 | 欧洲精品色在线观 | 无码aⅴ精品一区二区三区 无码aⅴ在线观看 | 精品国产欧| 91精品视频免费看 | 国产精品三区短视频 | 精品多人p群 | 区三区免费中文字幕 | 精品国产免费福利片 | 国产日韩海的味道 | 精品色重口色 | 美日韩午夜福利 | 久一福利中心 | 成人欧美亚洲精品 | 人成在线免费视频 | 国产乱子伦电视 | 91在线视频 | 欧美综合自拍 | 国产在线观看精品 | 97国语 | 午夜人成影视免费 | 精品国产天堂 | 绿巨人视频官网在线 | 午夜福利2025 | 国产精品一区日本 | 欧美在线视频不卡 | 国产精品一二三 | 91天堂国产网站 | 日韩成人欧美在线 | 午夜在线一区二区 | 午夜激情网址 | 午夜一区二区视频 | www.逼福利| 九九精品国产免费 | 精品日韩欧美在线 | 日本成人色区 |