您的位置:首页 > 运维架构 > 网站架构

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,或一个模块。

补充:

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 完全出现


架构思想

三要点:代码规范,架构模式,工具集
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 架构