文档章节

iOS 认知

w
 wesk痕
发布于 2016/06/27 15:57
字数 573
阅读 48
收藏 2

下面说下我对整个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

© 著作权归作者所有

w
粉丝 2
博文 17
码字总数 14343
作品 0
杭州
程序员
私信 提问
iOS 学习资料整理

视频教程(英文) Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS SDK 的使用, 属于 iOS 基础视频 iPad and iPhone Applic...

拉偶有所依
2015/01/19
2.4K
5
iOS朋友圈,视频播放器、钓鱼小游戏、玻璃动画源码

iOS精选源码 模仿抖音App的ye m切换框架 将所有类型的推送封装成API,提供OC和Swift双版本调用demo2.0 波浪动画 【Swift/Objective-C】强劲的日期选择控件 利用Masonry 和YYlable ,FDTempla...

sunnyaigd
2017/11/06
17
0
iOS 12 真的能让旧款 iPhone 速度飞起吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnnews/article/details/82757910 去年 9 月,苹果在发布 iOS 11 时曾表示,这是先进移动操作系统 iOS 的又...

CSDN资讯
2018/09/18
0
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
苹果发布 iOS 9.2 正式版:多项功能增强、改进

除了发布 OS X 10.11.2 和 tvOS 9.1 正式版外,苹果今天还发布了 iOS 9.2 正式版。iOS 9.2 是自 iOS 9 在今年9月发布之后的第二次重大版本更新。iOS 9.2 测试开始于10月底,开发者和公测用户...

oschina
2015/12/09
3.8K
22

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部