關(guān)于開發(fā)規(guī)范和優(yōu)化思想

關(guān)于封裝思路:

1.頁(yè)面過(guò)于冗余的時(shí)候可以采用分類形式郑藏,或者為了方便使用某些自定義的方法采用分類為系統(tǒng)控件添加方法。

比如路由編寫的時(shí)候仅炊,Nav為了方便使用弄诲,采用VC的分類形式。直接使用[vc gotoPage:pageName]

2.相關(guān)工具或者抽離出來(lái)的組件盯串,可以作為對(duì)象考慮分離問(wèn)題氯檐。比如寫路由的時(shí)候,路由的nav的參數(shù)拆分一個(gè)Model類体捏,便于方法看起來(lái)簡(jiǎn)潔冠摄。同理,路由的相關(guān)參數(shù)數(shù)據(jù)也可以封裝一個(gè)Data類几缭。如果里面有很多的數(shù)據(jù)相關(guān)操作河泳,不牽扯到視圖可以再封裝出一個(gè)manger或者Utility類。

3.工具類的方法暴露出來(lái)的盡量寫的全面年栓,多樣化拆挥,盡可能重載清晰。

4.可以對(duì)APPdelegate進(jìn)行抽離分類某抓,不同分類處理不同的業(yè)務(wù)纸兔。

5.對(duì)Nav? push的棧做最大限制,如果棧中vc數(shù)量過(guò)多否副,則自動(dòng)剔除最開始的一個(gè)(root push的第一個(gè)vc)

6.在ViewController的分類中綁定某個(gè)vc和某個(gè)字典汉矿。 這一點(diǎn)我另一篇文章分類里面寫過(guò),不過(guò)發(fā)現(xiàn)一個(gè)新的用途备禀。頁(yè)面?zhèn)髦档牧硪环N方式

- (void)setCallBackCommandForPageNavigation:(NSString *)command {

objc_setAssociatedObject(self, ((__bridge void*)callBackCommandKeyForPageNavigation),command, OBJC_ASSOCIATION_RETAIN);

}

7.類中定義的協(xié)議洲拇,枚舉,宏痹届。如果比較特殊或者比較多呻待,都可以新建一個(gè).h放置

8.可變集合,數(shù)組队腐,字典等等 插入objc前要做非空判斷蚕捉,容器類最好使用泛型,盡可能少用可變類型

9.通知要使用全局的字符串定義柴淘,采用組合形式迫淹。最好是加上didWill這一類的代表性關(guān)鍵字。參照系統(tǒng)的定義方式:

比如:NSTextView Did ChangeSelection Notification

10.在大量創(chuàng)建臨時(shí)變量的地方使用autoreleasepool为严,比如for敛熬,遍歷

11.在init和dealloc階段,self是一個(gè)不完整的對(duì)象第股。所以不允許在這兩個(gè)方法中使用self調(diào)用屬性应民,用_調(diào)用,但是外面正常方法中建議使用self,防止不調(diào)用get方法诲锹。

12.dealloc并不能準(zhǔn)確釋放計(jì)時(shí)器類Timer繁仁,因?yàn)槿绻衅渌胤綇?qiáng)引用類,或者timer強(qiáng)引用其他object根本不會(huì)走dealloc归园。所以有必要手動(dòng)將其置為nil

13.NSCopying協(xié)議的對(duì)象必須用copy修飾黄虱,NSString,NSURL庸诱,block捻浦,NSArray推薦使用copy。UIView這一類用strong桥爽,strong引用子類朱灿,weak引用parent

14. 小助手option+command+/即可自動(dòng)插入注釋? 完整格式的注釋

15. x=a?a:b 只要寫成x=a?:b

16. 長(zhǎng)條件if判斷用bool在外部替代?

? ? ? 比如:if(a == (B +c/d) || [aa isEqualToString:@"name"]) 可以把里面的判斷條件摘出來(lái)做一個(gè)bool值

17.*之前出了一個(gè)問(wèn)題,本地化的時(shí)候钠四,由于沒有了網(wǎng)絡(luò)請(qǐng)求的限制母剥,視圖創(chuàng)建的速度就跟不上進(jìn)程的速度了。導(dǎo)致有可能在調(diào)用self.view 的時(shí)候調(diào)用不到而報(bào)錯(cuò)形导。所以在使用除了viewDidLoad之外的一些方法里調(diào)用self.view 的時(shí)候一定要注意环疼,這個(gè)時(shí)候他是否已經(jīng)被創(chuàng)建出來(lái)了

18.在使用固定格式的dateFormatter時(shí)候,需要設(shè)置setLocale為"en_US_POSIX"朵耕,防止一些不同日歷下格式異常炫隶,其實(shí)和“en_US”是一樣的,但是系統(tǒng)更推薦用上面那個(gè)阎曹。當(dāng)然伪阶,大部分人直接用的"zh_CN"

NSDate* now = [NSDate date];

NSDateFormatter* format = [[NSDateFormatter alloc] init];

format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

19.不建議將UIView類的對(duì)象加入到NSDictionary, NSSet,如有需要可以添加到NSMapTable 和 NSHashTable。

NSDictionary,NSSet會(huì)對(duì)加入的對(duì)象做strong引用处嫌,而NSMapTable栅贴、NSHashTable會(huì)對(duì)加入的對(duì)象做weak引用。

20. 取substring的時(shí)候要考慮emoji字符的問(wèn)題熏迹,防止截到中間crash

- (NSString *)yySubstringToIndex:(NSUInteger)index

{

//越界判斷

NSRange wRange = [self rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, index)];

return [self substringWithRange:wRange];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末檐薯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子注暗,更是在濱河造成了極大的恐慌坛缕,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捆昏,死亡現(xiàn)場(chǎng)離奇詭異赚楚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)骗卜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門宠页,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)左胞,“玉大人,你說(shuō)我怎么就攤上這事举户≌志洌” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵敛摘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我乳愉,道長(zhǎng)兄淫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任蔓姚,我火速辦了婚禮捕虽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坡脐。我一直安慰自己泄私,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布备闲。 她就那樣靜靜地躺著晌端,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恬砂。 梳的紋絲不亂的頭發(fā)上咧纠,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音泻骤,去河邊找鬼漆羔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛狱掂,可吹牛的內(nèi)容都是我干的演痒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼趋惨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸟顺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起器虾,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诊沪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后曾撤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端姚,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年挤悉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渐裸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巫湘。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昏鹃,靈堂內(nèi)的尸體忽然破棺而出尚氛,到底是詐尸還是另有隱情,我是刑警寧澤洞渤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布阅嘶,位于F島的核電站,受9級(jí)特大地震影響载迄,放射性物質(zhì)發(fā)生泄漏讯柔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一护昧、第九天 我趴在偏房一處隱蔽的房頂上張望魂迄。 院中可真熱鬧,春花似錦惋耙、人聲如沸捣炬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)湿酸。三九已至,卻和暖如春灭美,著一層夾襖步出監(jiān)牢的瞬間稿械,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工冲粤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留美莫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓梯捕,卻偏偏與公主長(zhǎng)得像厢呵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子傀顾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中襟铭。。短曾。 其實(shí)如果沒有APIManager這一層是沒法使用delegate的寒砖,畢竟多個(gè)單...
    yhtang閱讀 5,207評(píng)論 1 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)嫉拐,斷路器哩都,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,303評(píng)論 25 707
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,726評(píng)論 0 9
  • 昨天又沒寫日記婉徘,說(shuō)起來(lái)也覺得好笑漠嵌,明明我寫簡(jiǎn)歷的進(jìn)度都停擺咐汞,西磨磨東磨磨,竟然我的時(shí)間居然都擠不出來(lái)寫一篇日記儒鹿。鑒...
    街亭盧旺達(dá)閱讀 146評(píng)論 0 0