Object-C iOS純程式碼布局 一堆代碼可以放這裡!

來源:互聯網
上載者:User

標籤:login   uiview   重寫   ctc   ios   code   定義   bsp   方法   

前言:

最近寫的文章都是創業類,好吧,今天好好寫寫技術類的文章!

不過分享的不是IOS相關的文章,畢竟這幾天在速成IOS,看的是objective-c,由於速成的很快,好累!

好在現在基本已經入了點門道了,這才看的懂新人的代碼,才能提前感受代碼危機。

對於IOS的速成口訣,回頭再分享,今天先分享一個簡單的抽象封裝!

1:先看看問題 說明:通常對於介面布局,有編寫代碼、Xib、Storyboard三種方式,而我看到新人寫的,是通過代碼布局的。

看到的代碼是這樣的:

A:編寫UI的代碼已分離到新的類(.h .m檔案)去,但仍然還是留下了不少代碼在ViewController中。

圖1:(在頁載入完後,調用了SetView方法,然後SetView方法裡一堆和UI相關的代碼)

圖2:

2:想想怎麼最佳化 目標:讓每一個Controller都有一個對應的View的UI類,而Controller類裡不要涉及UI建立的問題,盡量0入侵。

折騰過程:

這幾天學了下ObjectC的擴充類Category,覺的這東東有點搞頭。(和C#裡的擴充類很像,但不同的是,object-C裡擴充方法可以在基類裡調到,這很神奇)

可惜擴充類不支援屬性,沒法把一些變數放到擴充類的屬性裡,逼的要入侵Controller。

於是我又思考,折衷一下,用泛型定義一個共性的UIView,以避開入侵。

結果還是失敗了,objective-C的泛型不支援子類定義類型,唉~~~~

發現在C#輕鬆搞定的事,在object-c裡不容易啊!!!

3:二次折衷的方法:

1:定義Controller的基類,定義一個方法,並在頁面載入時調用。

2:假設有LoginController,建立一個LoginView,繼承自UIView

 

3:一些UI相關的定義變數就寫在這裡了(.h檔案)

 

4:在LoginView添加一個擴充類(不用建立類檔案了,直接追加代碼就好了):

 這裡擴充了一個方法叫initUI(等於重寫基類的方法)

 5:這裡就是唯一二次折衷的地方,需要入侵Controller.h,定義一個UI屬性。

(之前是想通過把這個屬性定義到基類去,可惜泛型不支援子類指定類型)

6:接下來就是寫你的UI相關的代碼了。

總結:

1:手工寫的代碼的可視化,在調試階段才能看到,這是很悲催的結果。

2:個人不太建議手工布局代碼的,開發效率也是個問題(當然你可以通過封裝一些UI代碼進一步提升下效率)。

3:不知道XCode沒有摺疊.h檔案到.m檔案下的外掛程式呢?檔案太多,切來切去太傷眼了。

Object-C iOS純程式碼布局 一堆代碼可以放這裡!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.