iOS的第一个习作

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

代码在这里,对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

时间: 2024-11-08 11:50:27

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

iOS 进阶 第一天(0323)

0323 Storyboard连线错误 如下图: 不允许直接修改对象的结构体属性成员,但允许直接整体修改对象的结构体属性 如下图: 打印一个控件对象的frame 如下图: 如果一个控件无论怎么改变它的大小都不起作用,那么就要想到从iOS6开始出现的AutoLayout.这个面试必面 iOS 进阶 第一天(0323)

学习ios笔记第一天的C语言学习记录

c语言基础学习 int num1 = 15; int num2 = 5; int temp = 0; //先把num1放到temp里 temp = num1; //先把num2放到num1里 num1 = num2; //先把temp放到num2里 num2 = temp; 算数运算符 +加法运算 -减法运算符 *乘法运算符 /除法运算符  ------整型相除取整,除数不为0 %取余运算符 ------两边均为整数 ++递增运算-------运算符在前,先执行:运算符在后,后执行: --递减运

学习iOS:第一天

今天开始学习iOS开发,当然是从stanford得iOS 7教程开始了,学习了lecture 1,涉及到得知识如下. iOS从下而上的4层框架:Core OS, Core Services, Media, Cocoa Touch, 在apple的官方文档iOS Developer Library中有介绍这4层,Core OS层管理虚拟内存.线程.文件系统.网络等,包含了内核环境.驱动.iOS基本接口.Core Services层提供基本的iOS服务,如访问文件.低级别数据类型.Bonjour服务

IOS学习第一课

第一课,也就是公认的HelloWorld了. 步骤如下: 1  创建helloWorld工程 2 实现QuizViewController.h文件 3 实现QuizViewController.m文件 4 使用StorBoard绘制界面 5 连接输出口 6 定义事件 IOS学习第一课

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

Xamarin iOS编写第一个应用程序创建工程 在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了.本节将主要讲解在Xamarin Studio中如何进行工程的创建以及编写代码等内容XamariniOS编写第一个应用程序创建工程本文选自Xamarin iOS开发实战大学霸. 1.3.1  创建工程 XamariniOS编写第一个应用程序创建工程本文选自Xamarin iOS开发实战大学霸,很多的开发工具,在编写代码之前,都必须要创建一个工程,如Visual

swift语言 编写 ios开发 第一个程序hello world!

老实说:第一个swift语句的ios不是代码敲出来的,我甚至还没来得急看代码,hello world 就出来了..... 本人开发环境:mac osx 10.10 dp1 + xcode6 beta + swift(更低xcode不支持swift语言) 思路与大致过程: 1.建立工程,工程包含界面文件,代码文件等等 2.在工程的界面文件中加入text控件,用于显示hello world 3.输入hello world ,模拟运行 让我们一步一步来: 1.建立工程,工程包含界面文件,代码文件等等

iOS 学习第一步

学习iOS首先要学会怎么使用苹果电脑 本人初期学习过程总结: a9本课程从第一次上手Mac开始,循序渐进的介绍了 OS X 的日常使用方法以及诸多实用技巧.在课程的后半部分以范例的形式深入讲解了OS X 下的一些高级技巧. 苹果系统是软硬结合度非常高的 1.0:Mac OS 简述.谈谈 Mac OS 到 OS X 的发展过程,以及 Mac OS 与 Windows 的爱恨情仇. MAC(苹果电脑) Mac是苹果自1984年起以“Macintosh”(麦金塔电脑)开始的个人消费型计算机搭载Mac

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

一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是我们的HelloWorld程序了.那么本文将会通过这么一个简单的程序来讲解一下iOS中的程序生命周期,应用中关键的几个对象,项目结构,最后在手把手的创建一个空项目. 二.建立简单程序HelloWorld 下面先用Xcode来新建一个HelloWorld程序: 点击下一步即可: 这里和我们在Andro

iOS 键盘第一响应

. UIResonder 对于C#里所有的控件(例如TextBox),都继承于Control类.而Control类的继承关系如 下: System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control 对于iOS里的UI类,也有类似的继承关系. 例如对于UITextField,继承于UIControl:UIControl继承于UIView,UIView继承于UIR