首发:个人博客,更新&纠错&回复

代码在这里,对git还是使用不熟练,好在github新建项目后体贴地提示是不是要执行这样两句——

这两句我肯定是背不住的,所以记一下。

git remote add origin https://github.com/qidafang/iOS_427studio.git
git push -u origin master

思而勤工作室的手机app,ios版开发比android还顺利一点,记录一下用到的知识:

1)表现层

故事板做界面+controller类,用着很舒服的组合。而且基础库自带了标签结构和导航结构。

界面拖拽式生成,controller中的两大关键元素(代表界面元素对象的实例属性、响应界面元素操作的实例方法)也拖拽生成。

简便到如此,以至于嫌controller过于简洁了,干脆让它实现界面元素的数据源接口和代理接口,为了实现相应方法,对应该元素数据的集合对象也必须是controller的实例属性了,当然这也是天经地义,controller持有model是理所当然的。

界面组件,标签按钮文本框的使用就不说了,webview分别演示了指定html指定url两种用法。

2)rest

因为实例简单,省去业务逻辑层,直接说数据层。当然,数据层指的不是狭义的“关系型数据库”,而是广义的与所有形式数据源打交道都算,在这个项目里分成两部分:rest和dao,分别用于与服务器和本地数据库打交道。

因为rest类的异步使用方法是在回调函数里进行后续动作,而“后续动作”是对界面进行修改,比如从服务器上抓取数据来填充界面上的列表,所以rest层类需要持有controller类的对象,在回调函数中好修改controller类的属性(即代表页面数据的model属性)、调用controller对象的方法(如让表格重新加载内容的reload方法)。

从分层角度看,这种“下层类了解上层类的存在”是不合理的,更合理的应该是controller实现某个接口例如RestCaller,该接口定义一个onRestOk(data:NSObject)这样的函数,controller实现的该方法体从data中获得rest传来的数据,然后执行逻辑;rest类声明一个var caller:RestCaller实例变量,在回调函数中调用该caller.onRestOk(有用的数据);controller类使用rest类时即这样:

let rest:SomeRest = SomeRest();

rest.caller = self;

rest.doQuery(xxxx);

这是一种解耦的思路,由于时间就不实现了。至于http请求、json处理,这些基础类库的使用也不说了。

3)dao

虽然项目是用swift写的,但在dao这块还是不得不用objective-c,让我很高兴objective-c的学习还是有用。不过除此之外想想,俩语言不得不混用实在不是好事。

因为用的是基础语法,非常类似java的jdbc那一套,打开连接,准备sql,赋予参数,执行,遍历结果什么的,不用多说。用到的全局函数类似php的用法,面向对象程序员看了,优越感油然而生。

示例程序是列表的增删改查,与android类似,列表是基础库,单元格自行实现,单元格对象需要持有数据,因为在点击格里删改按钮时需要知道点的是哪一行,删除之后肯定需要让controller刷新数据,所以让单元格对象持有了controller的引用(为了省事还让它持有了dao单例)。在增改打开表单页面的时候,需要在表单controller知道自己是增还是改,而且持有要改的对象的数据,这都是最理所当然的了。

4)总结

有了上面1)2)3)这三样技术,综合使用就“运用之妙,存乎一心”了,因为是练手,没有进行形而上的设计和封装,比如提炼基础类和接口。对小项目来说,可能降级到粗浅一点的抽象级别还更舒服一些,杀牛用杀牛刀,杀鸡用杀鸡刀。

这就像当servlet和jdbc(再加上基础html,css,javascript)会用了之后,剩下的都是锦上添花的进步,之后的进步的最大收获在设计和思想上。而我个人因为有java的长期训练,倒是不需要做“在ios上花大量时间练习来进步到有思想的境界”这一工作(笑),毕竟像《企业应用架构模式》之类的书的伟大,不是仅仅限于某个语言和某个领域的,幸运的是这些书我读过(个人书单)。

这一个月左右(总时间超过一个月,但净时间不到)不算短,也不算长,毕竟是两种语言、好几本书、全新的操作系统(mac不好用!)和ide。虽然不算长,也到此为止了,因为据爱老师说混合开发是主流,那ios原生技术了解到基础,并且有能力随时学习别的基础,就足够了,以后用混合开发的时候,不至于迷惑:“哎呀我不懂ios原生开发,搞混合开发有点摸黑。”。

最后上个图~

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432

iOS的第一个习作的更多相关文章

  1. Xamarin iOS编写第一个应用程序创建工程

    Xamarin iOS编写第一个应用程序创建工程 在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了.本节将主要讲解在Xamarin Studio中如何进行工程的 ...

  2. iOS狂暴之路---iOS的第一个应用中能学到哪些知识

    一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是 ...

  3. 菜鸟成长日记之新手备忘录-IOS开发第一个项目总结

    2013年5月3号,开始找IOS开发工作(自学了大半年,做了一个功能不全的Demo,该出去见见世面了!),5月4号面试了第一家公司(是家刚成立一段时间的外包公司),5月5号第一家公司已二轮电话面试,5 ...

  4. React Native ios开发第一课

    前言 本篇文章的作用在于帮助你快速上手使用React Native编写iOS应用.如果你现在还不太了解React Native是什么以及Facebook为什么要创建React Native,你可以先看 ...

  5. ios开发第一步--虚拟机安装MAC OS X

    暂时还没买Macbook,先用虚拟机练练手. 先说说准备工作,我是在win8下安装的,这个不是关键的,只要Vmware版本和MAC OS X版本确定就行了,win7下同样可以. 1.虚拟机Vmware ...

  6. iOS 判断第一个字符是数字还是汉字

       NSString *titleStr = @"琳小兮";  //先截取字符串,拿到第一个字符         NSString *firstStr = [titleStr s ...

  7. IOS彩票第一天基本框架搭建

    *****初始化 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionar ...

  8. IOS设计模式第一篇之MVC

    设计模式的好处:我们可以写出容易理解,重用度很高的代码.降低代码的耦合度,符合软件工程的思想. 设计模式主要分为三类:创造型的:单例和抽象工厂.结构类型的: MVC  Decorator, Adapt ...

  9. iOS 基础 第一天(0804)

    OC对象的本质就是一个结构体 为什么说是个结构体? 例如:类里面声明了几个成员变量\实例变量(已添加@plublic),外部对象的指针在访问这个变量的时候是这么写的p->a 0804 注意oc的 ...

随机推荐

  1. 【转】Android中Application类用法

    转自:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application和A ...

  2. LeetCode Shortest Word Distance III

    原题链接在这里:https://leetcode.com/problems/shortest-word-distance-iii/ 题目: This is a follow up of Shortes ...

  3. 在定位中,如何清除已经设置好的bottom

    这个东西其实很简单,将bottom设auto,便可在设置top的值,那么具体的应用是什么?目前一个是用于全屏,二是用于输入框在手机端的下半屏(被输入发遮挡问题)? 例子如下 css代码: * { ma ...

  4. PHP回调函数的几种用法

    PHP回调函数的实现方法 目录 前言      全局函数的回调      类静态函数的回调      对象的方法的回调      PHP事件模型(观察者模式)的实现思路    前言 最近在开发一个PH ...

  5. 教你安装CentOS 6.5如何选择安装包

    近来发现越来越多的运维小伙伴们都有最小化安装CentOS 6.5系统的洁癖,因此,找老男孩来咨询,这个“洁癖”好习惯啊,必须支持,,因此发布本文和大家分享下. (1)系统安装类型选择及自定义额外包组 ...

  6. JSON Web Token

    What is JSON Web Token? JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact a ...

  7. CentOS安装NodeJS v0.10.25 + Express

    安装必需组件 yum -y install gcc make gcc-c++ openssl-devel wget cd ~wget http://nodejs.org/dist/v0.10.25/n ...

  8. centos6关闭ipv6

    Install packages for CentOS 6.0 Minimal cat <<EOF>>/etc/modprobe.d/disable_ipv6.conf ali ...

  9. ajax异步提交文件

    首先 下载jquery和jquery.form.js   http://malsup.com/jquery/form/ <script type="text/javascript&qu ...

  10. Java NIO 开篇

    一些很好的blog(待更新): 1.NIO入门 2.NIO.2 入门,第 1 部分: 异步通道 API I- 就是从硬盘到内存 O- 就是从内存到硬盘 一.阻塞IO 第一种方式:我从硬盘读取数据,然后 ...