關(guān)于iOS一些設(shè)計(jì)思路

從事iOS開發(fā)兩年時(shí)間了,從最初只關(guān)心功能,到每次拿到設(shè)計(jì)原型,都要坐在一起討論每個(gè)細(xì)節(jié)的設(shè)計(jì)。
比如:這個(gè)模塊使用什么方式實(shí)現(xiàn)比較合適,這個(gè)參數(shù)是不是必須的,功能和展示必須要分開(進(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)示意圖:


Snip20160123_1.png

之前七牛批量圖片上傳使用的是通知方式,因?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í)候其他類中的成員變量。
最后經(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)下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,347評(píng)論 25 708
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實(shí)...
    香橙柚子閱讀 24,829評(píng)論 8 183
  • 第十二天改變生命的神奇之人 作者:王銳 2017年5月19日 今是感恩行動(dòng)的第十二天,時(shí)間過(guò)得好快,今天中午去健身...
    復(fù)活的鳥閱讀 283評(píng)論 0 0
  • 多線程在iOS開發(fā)中是一個(gè)比較常見也十分重要的一門技術(shù),首先我們知道每一個(gè)程序運(yùn)行都會(huì)開啟一個(gè)進(jìn)程,而一個(gè)進(jìn)程想要...
    noyya閱讀 217評(píng)論 0 0
  • 青青子衿,悠悠我心??v我不往,子寧不嗣音。
    冷康康閱讀 359評(píng)論 0 0

友情鏈接更多精彩內(nèi)容