先寫幾句廢話。做iOS也已經(jīng)兩年有余。之前也想著開個博客,記錄下開發(fā)的點點滴滴。但自我感覺總結(jié)能力不太好,再一個想要總結(jié)的東西網(wǎng)上基本也能查的到,也就擱置下來。最近又想著開一個博客,本想著第一篇博客來想講下cocoapod的使用,但今天在做一個例子時,用到了block,心想網(wǎng)上能查到的block,前篇一律,大部分是個語法。但真正的項目中如何使用block呢,于是乎提筆記下此文,書寫下自己對block最常用的方式,也作為自己博客的新篇章。此文只是作為block的理解的輔助文章,如有不合理,不對的地方,請不要吝嗇閣下的流量,猛戳進(jìn)來。
以下開始正文:
block常用的方式:屬性,
方法參數(shù),
對于我來說,block最常用的方法就是代替協(xié)議。而代替協(xié)議使用的時候,屬性和方法參數(shù)就需要關(guān)聯(lián)使用。
先看下我例子實現(xiàn)的效果,就是一個滾動視圖,當(dāng)點擊某一個item時,返回相應(yīng)item的內(nèi)容:
定時滾動很簡單。代碼就不貼了。主要說說點擊滾動視圖時怎么返回里面的值。這個功能當(dāng)然用delegate也能實現(xiàn),但這樣簡單的回調(diào)我更傾向于用block。下面就說說block的實現(xiàn)方法。
首先要在這個滾動視圖的類中聲明一個block屬性,就是上面的第一張截圖,返回值空,參數(shù)需要一個字符串,
再者,聲明一個block作為參數(shù)的方法,就是上面的第二張截圖,這個block就是返回所需要的字符串值。
.m中的實現(xiàn)也非常簡單,
先把方法中的block和屬性進(jìn)行綁定,說白點就是賦值:
這樣在調(diào)取這個方法時,所執(zhí)行的block就是屬性block。
然后,在item的點擊方法中給屬性block 進(jìn)行賦值:
這樣就已經(jīng)OK 了,看下實現(xiàn):
這個方法你就可以在初始化self.rollView后直接調(diào)用,不需要協(xié)議那樣單拿出來個方法了。
第一次寫博客,不知道怎么傳自己的demo,可能這里也不支持吧。如果有需要,我會上傳到gitHub上,供使用。
此文有用無用,請給個評論,指正我寫作的方式,也讓我自己能夠?qū)懗龈玫膬?nèi)容,謝謝。