Objective-C iOS纯代码布局 一堆代码可以放这里!
前言:
最近寫的文章都是創(chuàng)業(yè)類,好吧,今天好好寫寫技術(shù)類的文章!
不過分享的不是IOS相關(guān)的文章,畢竟這幾天在速成IOS,看的是objective-c,由于速成的很快,好累!
好在現(xiàn)在基本已經(jīng)入了點(diǎn)門道了,這才看的懂新人的代碼,才能提前感受代碼危機(jī)。
對(duì)于IOS的速成口訣,回頭再分享,今天先分享一個(gè)簡(jiǎn)單的抽象封裝!
1:先看看問題
說明:通常對(duì)于界面布局,有編寫代碼、Xib、Storyboard三種方式,而我看到新人寫的,是通過代碼布局的。
看到的代碼是這樣的:
A:編寫UI的代碼已分離到新的類(.h .m文件)去,但仍然還是留下了不少代碼在ViewController中。
圖1:(在頁(yè)加載完后,調(diào)用了SetView方法,然后SetView方法里一堆和UI相關(guān)的代碼)
圖2:
2:想想怎么優(yōu)化
目標(biāo):讓每一個(gè)Controller都有一個(gè)對(duì)應(yīng)的View的UI類,而Controller類里不要涉及UI創(chuàng)建的問題,盡量0入侵。
折騰過程:
這幾天學(xué)了下ObjectC的擴(kuò)展類Category,覺的這東東有點(diǎn)搞頭。(和C#里的擴(kuò)展類很像,但不同的是,object-C里擴(kuò)展方法可以在基類里調(diào)到,這很神奇)
可惜擴(kuò)展類不支持屬性,沒法把一些變量放到擴(kuò)展類的屬性里,逼的要入侵Controller。
于是我又思考,折衷一下,用泛型定義一個(gè)共性的UIView,以避開入侵。
結(jié)果還是失敗了,objective-C的泛型不支持子類定義類型,唉~~~~
發(fā)現(xiàn)在C#輕松搞定的事,在object-c里不容易啊!!!
3:二次折衷的方法:
1:定義Controller的基類,定義一個(gè)方法,并在頁(yè)面加載時(shí)調(diào)用。
2:假設(shè)有LoginController,新建一個(gè)LoginView,繼承自UIView
?
3:一些UI相關(guān)的定義變量就寫在這里了(.h文件)
?
4:在LoginView添加一個(gè)擴(kuò)展類(不用新建類文件了,直接追加代碼就好了):
?這里擴(kuò)展了一個(gè)方法叫initUI(等于重寫基類的方法)
?5:這里就是唯一二次折衷的地方,需要入侵Controller.h,定義一個(gè)UI屬性。
(之前是想通過把這個(gè)屬性定義到基類去,可惜泛型不支持子類指定類型)
6:接下來就是寫你的UI相關(guān)的代碼了。
總結(jié):
1:手工寫的代碼的可視化,在調(diào)試階段才能看到,這是很悲催的結(jié)果。
2:個(gè)人不太建議手工布局代碼的,開發(fā)效率也是個(gè)問題(當(dāng)然你可以通過封裝一些UI代碼進(jìn)一步提升下效率)。
3:不知道XCode沒有折疊.h文件到.m文件下的插件呢?文件太多,切來切去太傷眼了。
本文原創(chuàng)發(fā)表于博客園,作者為路過秋天,原文鏈接:http://www.cnblogs.com/cyq1162/p/6843564.html
總結(jié)
以上是生活随笔為你收集整理的Objective-C iOS纯代码布局 一堆代码可以放这里!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协鑫集成进军乌克兰光伏市场 切尔诺贝利望
- 下一篇: TestNG测试带参构造函数的类