iOS架构小知识点
2015-11-19 11:32
846 查看
关于继承
虽然继承是代码复用的一种方案,但不是所有场景都适用于继承。继承是紧耦合的一种模式,易牵一发动全身,高耦合在复用时造成冗余。解决方案之一:用组合代替继承。
组合和继承的选择:is a & has a.考虑是否需要从新类上溯回基本类,需要则用继承。比如:Vehicle类是所有车辆的类,它至少具有可被驾驶的功能;而Car是所有小娇车的类,它具有了载人的功能,它必须回溯,因为它必须具有被驾驶的功能。而Car上的方向盘与刹车,与Car之间只是简单地使用了它们具有的功能,是整体与部分的关系。所以是组合使用的。
使用继承需注意:父类只是给子类提供服务,并不涉及子类的业务逻辑;父类的所有变化,需在子类中体现,即需求决定用继承;当发现继承超过2层后,考虑是否应该用继承这种方案了。
VC生命周期事项
在viewDidload里面只做addSubview的事情,在viewWillAppear中更新Form数据(Autolayout发生在viewWillAppear之后,严格来说这里通常不做视图位置的修改);改变位置可以放在viewWilllayoutSubview或者viewDidLayoutSubview里,而且在viewDidLayoutSubview确定UI位置关系之后设置autoLayout比较稳妥。最后在viewDidAppear里面做Notification的监听之类的事情。所有初始化,则交给getter去做。
所有button,gestureRecognizer的响应事件都放在专门开设的event response区域里
除此之外只剩私有方法了,而对于私有方法,一般不应该放在viewController中,可写成一个category,或一个模块。
补充:
架构思想
三要点:代码规范,架构模式,工具集
虽然继承是代码复用的一种方案,但不是所有场景都适用于继承。继承是紧耦合的一种模式,易牵一发动全身,高耦合在复用时造成冗余。解决方案之一:用组合代替继承。
组合和继承的选择:is a & has a.考虑是否需要从新类上溯回基本类,需要则用继承。比如:Vehicle类是所有车辆的类,它至少具有可被驾驶的功能;而Car是所有小娇车的类,它具有了载人的功能,它必须回溯,因为它必须具有被驾驶的功能。而Car上的方向盘与刹车,与Car之间只是简单地使用了它们具有的功能,是整体与部分的关系。所以是组合使用的。
使用继承需注意:父类只是给子类提供服务,并不涉及子类的业务逻辑;父类的所有变化,需在子类中体现,即需求决定用继承;当发现继承超过2层后,考虑是否应该用继承这种方案了。
VC生命周期事项
在viewDidload里面只做addSubview的事情,在viewWillAppear中更新Form数据(Autolayout发生在viewWillAppear之后,严格来说这里通常不做视图位置的修改);改变位置可以放在viewWilllayoutSubview或者viewDidLayoutSubview里,而且在viewDidLayoutSubview确定UI位置关系之后设置autoLayout比较稳妥。最后在viewDidAppear里面做Notification的监听之类的事情。所有初始化,则交给getter去做。
所有button,gestureRecognizer的响应事件都放在专门开设的event response区域里
除此之外只剩私有方法了,而对于私有方法,一般不应该放在viewController中,可写成一个category,或一个模块。
补充:
1.alloc 创建对象,分配空间 2.init (initWithNibName) 初始化对象,初始化数据 3.loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图 4.viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件 5.viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了 6.viewWillLayoutSubviews:控制器的view将要布局子控件 7.viewDidLayoutSubviews:控制器的view布局子控件完成 8.viewDidAppear 视图已在屏幕上渲染完成 当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反 1.viewWillDisappear视图将被从屏幕上移除之前执行 2.viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了 3.dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放 (这期间系统可能会多次调用viewWillLayoutSubviews 、 viewDidLayoutSubviews 俩个方法) 当我们点击push的时候首先会加载下一个界面然后才会调用界面的消失方法 1. initWithCoder:(NSCoder *)aDecoder:ViewController2 (如果用xib创建的情况下) 2. loadView:ViewController2 3. viewDidLoad:ViewController2 4. viewWillDisappear:ViewController1 将要消失 5. viewWillAppear:ViewController2 将要出现 6. viewWillLayoutSubviews ViewController2 7. viewDidLayoutSubviews ViewController2 8. viewWillLayoutSubviews:ViewController1 9. viewDidLayoutSubviews:ViewController1 10. viewDidDisappear:ViewController1 完全消失 11. viewDidAppear:ViewController2 完全出现
架构思想
三要点:代码规范,架构模式,工具集
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 架构纵横谈之二 ---- 架构的模式与要点
- BS项目中的CSS架构_仅加载自己需要的CSS
- 关于三种主流WEB架构的思考
- Android操作系统的架构设计分析
- w3c技术架构介绍
- linux学习笔记 linux目录架构
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- mysql数据库应付大流量网站的的3种架构扩展方式介绍