從事iOS開(kāi)發(fā)兩年時(shí)間了,從最初只關(guān)心功能腻脏,到每次拿到設(shè)計(jì)原型鸦泳,都要坐在一起討論每個(gè)細(xì)節(jié)的設(shè)計(jì)。
比如:這個(gè)模塊使用什么方式實(shí)現(xiàn)比較合適,這個(gè)參數(shù)是不是必須的永品,功能和展示必須要分開(kāi)(進(jìn)度條和上傳進(jìn)度計(jì)算),固定的模塊是不是可以抽出來(lái)作為獨(dú)立的tagret做鹰,目標(biāo)是盡可能讓每個(gè)模塊都能穩(wěn)定,并在以后的每次快速迭代中鼎姐,高效钾麸,可用,穩(wěn)定炕桨。
其實(shí)仔細(xì)坐下來(lái)想想饭尝,你會(huì)發(fā)現(xiàn)自己當(dāng)時(shí)拍一拍腦子覺(jué)得這很簡(jiǎn)單啊,不就是實(shí)現(xiàn)一個(gè)功能嘛献宫。其實(shí)不然钥平,要讓自己負(fù)責(zé)的模塊完美的供團(tuán)隊(duì)使用,要考慮的情況其實(shí)還是很多的姊途。
給大家看一下目前項(xiàng)目的結(jié)構(gòu)示意圖:
之前七牛批量圖片上傳使用的是通知方式涉瘾,因?yàn)楹芏鄷r(shí)候奈惑,不管是網(wǎng)絡(luò)請(qǐng)求還是圖片轉(zhuǎn)化,為了不影響主線程睡汹,一般都是采用異步線程去處理,所以不可能實(shí)時(shí)得到轉(zhuǎn)化的結(jié)果寂殉,那么怎么做呢囚巴?其實(shí)有三種做法:
@1 通知 Notification ,收到返回結(jié)果發(fā)送通知,進(jìn)行后續(xù)操作友扰。
@2 信號(hào)量 因?yàn)槭钱惒降耐妫酝ㄟ^(guò)發(fā)送信號(hào)量的方式,在收到信號(hào)之后做后續(xù)操作村怪。
@3 block block閉包的性質(zhì)秽浇,讓我們可以舒服的時(shí)候其他類(lèi)中的成員變量。
最后經(jīng)過(guò)再三決定還是使用block方式甚负,主要原因還是在封裝的完善上考量的柬焕。使用前兩種當(dāng)然可以實(shí)現(xiàn),但是封裝性太差梭域。使用block斑举,我們可以讓block作為函數(shù)參數(shù)使用,獲取內(nèi)部封裝的進(jìn)度病涨,返回結(jié)果等信息富玷。
每種技術(shù)的選擇,都是有著意義的既穆,我們?cè)谶x擇某種實(shí)現(xiàn)方式的時(shí)候赎懦,其實(shí)應(yīng)該更多的考量它對(duì)今后每個(gè)模塊的影響,而不僅僅是當(dāng)下幻工。