最近写的文章都是创业类,好吧,今天好好写写技术类的文章!objective-c
不过度享的不是IOS相关的文章,毕竟这几天在速成IOS,看的是objective-c,因为速成的很快,好累!布局
好在如今基本已经入了点门道了,这才看的懂新人的代码,才能提早感觉代码危机。优化
对于IOS的速成口诀,回头再分享,今天先分享一个简单的抽象封装!插件
看到的代码是这样的:3d
A:编写UI的代码已分离到新的类(.h .m文件)去,但仍然仍是留下了很多代码在ViewController中。调试
图1:(在页加载完后,调用了SetView方法,而后SetView方法里一堆和UI相关的代码)blog
图2:继承
折腾过程:开发
这几天学了下ObjectC的扩展类Category,觉的这东东有点搞头。(和C#里的扩展类很像,但不一样的是,object-C里扩展方法能够在基类里调到,这很神奇)it
惋惜扩展类不支持属性,无法把一些变量放到扩展类的属性里,逼的要入侵Controller。
因而我又思考,折衷一下,用泛型定义一个共性的UIView,以避开入侵。
结果仍是失败了,objective-C的泛型不支持子类定义类型,唉~~~~
发如今C#轻松搞定的事,在object-c里不容易啊!!!
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文件下的插件呢?文件太多,切来切去太伤眼了。