日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C iOS纯代码布局 一堆代码可以放这里!

發(fā)布時(shí)間:2025/3/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C iOS纯代码布局 一堆代码可以放这里! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:

最近寫的文章都是創(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。