第三層:ASI融虽、AF或者其他網(wǎng)絡(luò)請(qǐng)求方式。
第二層:第二層分有基類(lèi)與類(lèi)目(Category)構(gòu)成灼芭,基類(lèi)用于配置共有參數(shù)與發(fā)起請(qǐng)求有额,分類(lèi)則是為了團(tuán)隊(duì)開(kāi)發(fā)與結(jié)構(gòu)清晰。
第一層:即應(yīng)用層彼绷,比如一個(gè)登錄巍佑、注冊(cè)操作,需要從界面上獲得參數(shù)寄悯,并配置回調(diào)萤衰。
二 ?業(yè)務(wù)層比較清晰 ?[AFNetworkingAPIcallApiWithParam:self.paramsuccessed:^(Response*response){if([self.delegaterespondsToSelector:@selector(successWithResponse:)]){[self.delegatesuccessedWithResponse:response];}}failed:^(Request*request,NSError*error){if([self.delegaterespondsToSelector:@selector(failedWithResponse:)]){[selffailedWithRequest:requesterror:error];}}];
通過(guò)Notification的方式交付數(shù)據(jù)。正常情況下應(yīng)該是避免使用Block的猜旬。
離散型API調(diào)用方式:
當(dāng)一個(gè)頁(yè)面的請(qǐng)求正在天上飛的時(shí)候脆栋,用戶等了好久不耐煩了,小手點(diǎn)了個(gè)back洒擦,然后ViewController被pop被回收筹吐。此時(shí)請(qǐng)求的著陸點(diǎn)就沒(méi)了。這是很危險(xiǎn)的情況秘遏,著陸點(diǎn)要是沒(méi)了,就很容易crash的嘉竟。一般來(lái)說(shuō)處理這個(gè)情況都是在dealloc的時(shí)候取消當(dāng)前頁(yè)面所有的請(qǐng)求邦危。如果是集約型的API調(diào)用,這個(gè)代碼就要寫(xiě)到ViewController的dealloc里面舍扰,但如果是離散型的API調(diào)用倦蚪,這個(gè)代碼寫(xiě)到APIManager里面就可以了,然后隨著ViewController的回收進(jìn)程边苹,APIManager也會(huì)被跟著回收陵且,這部分代碼就得到了調(diào)用的機(jī)會(huì)。這樣業(yè)務(wù)方在使用的時(shí)候就可以不必關(guān)心著陸點(diǎn)消失的情況了,從而更加關(guān)注業(yè)務(wù)慕购。
View架
不要在viewDidLoad里面初始化你的view然后再add聊疲,這樣代碼就很難看。在viewDidload里面只做addSubview的事情沪悲,然后在viewWillAppear里面做布局的事情(勘誤1)获洲,最后在viewDidAppear里面做Notification的監(jiān)聽(tīng)之類(lèi)的事情。至于屬性的初始化殿如,則交給getter去做贡珊。
塘橋
先是life cycle,然后是Delegate方法實(shí)現(xiàn)涉馁,然后是event response门岔,然后才是getters and setters。這樣后來(lái)者閱讀代碼時(shí)就能省力很多烤送。
Autolayout