您的位置:首页 > 移动开发 > IOS开发

iOS 认知

2016-06-27 00:00 507 查看
摘要: 从大3暑假出来实习,到现在。默默的码了3年代码,以下是对iOS 移动开发的一些简单认知和总结

下面说下我对整个app层的一些理解 这边我觉得可以从大的方面来讲先。

我们一个app 基本包括3层:DB层、 Server层、应用层。



这个是我对app整个框的认知


上面3个间的关系 是目前我理解的,不同的人对他们的处理肯定也有一些差入。

一个app就像一颗树,是一颗树,一个主干,很多分叉树枝,分叉再分叉,不断嵌套。



看到这种关系,我总觉得这就是N个单例组合,N个木块,就像搭积木,不同的产品,不同的模型,不同的设计思路。但总有那么一些是共通的。 如上图 app给用户的视觉就是个UIWindow,window里可以存放UIController,一些页面的跳转也基本是通过controller之间的关系跳转实现的,UIController添加不同的控件。

如何使我们的代码使用方便简单,是我们一直追求的事情。



这是我在百度上找的一张图, 从这个我们可以清晰的看到我们常用的一些控件的关系,NSObject 是最初的父类,我们自己也经常会继承它,定制一个满足我们需求的对象。 对图中NS系,个人认为就是个工具类,UI系是我们眼睛看得到的。 我们在实际的app开发过程中,经常会遇到一个View中addSubView 另外一个view,这时候如何更好的在view和view view和Controller 之间传递数据/事件。 这边UIResponder是一个很吸引人的类,

nextResponder 这个属性能找到你上一层的响应控件,UIViewController 也是UIResponder的子类。在事件的传递中 我们经常追踪到Controller层,找到当前view 对应的baseController:

```

id curController = self;

while (![curController isKindOfClass:[UIViewController class]]) {

if ([curController nextResponder]) {

curController = [curController nextResponder];

}

else

{

curController = nil;

break;

}

}

```

通过这个方法我们可以获得当前view所在的Controller,当前前提是你的view 要有superView。这在项目中是个比较实用的方法。

详细见:https://github.com/weskhen/UIResponder-BaseController
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息