iPhone客户端开发笔记(四)

1,小总结。

这是第四天,每天都有小进步。概括起来,总共有以下几方面进步:

1,Xcode使用已经比较熟练,两个快捷键option和command与鼠标左键的配合日臻成熟。

2,使用基础Cocoa对象,比如NSString,NSData,NSArray,NSDictionary,比较熟练,表现出来是查手册的次数减少了许多。

3,Xcode中warning的作用跟其它平台不同,这个是要认真对待的,很多会造成程序终止,比如调用一个不存在的实例方法。

4,调试工具,配合GDB和内存查看器,大概感觉能控制程序运行流程。

已经快十一点半了,写的有点晚,上午主要做的通讯interface,数据打包interface的封装。

通讯interface负责通讯过程的建立、消息处理,数据读取、发送。已经代码合并进App框架中。

数据打包interface负责TCP协议包的封和拆,射频数据包的封和拆。封装搞定,拆解还没开始。

由于昨晚写到十二点,上午从八点五十开始写,担心精力会不够,没想到现在还是很精神,这得益于新买的Mac键盘,太好用了。

哦,还有豆瓣FM,边听音乐边写程序,我听的是“欧美”,英文歌比较不会引起大脑的自然反应,中文歌就不行,很容易被带走。

2,UDP广播的实现。

引子:http://www.cocoachina.com/bbs/read.php?tid-52928.html 

目标:http://code.google.com/p/cocoaasyncsocket/

最新:https://github.com/robbiehanson/CocoaAsyncSocket/

这是某人(抱歉,日后一定补上)写的Cocoa异步IO实现。

用git clone下载源代码,发现代码组织为三个目录:GCD,RunLoop,Vendor。

GCD是什么呢?Bing之,得到这个说明文:http://www.cnblogs.com/kesalin/archive/2011/08/18/cocoa_thread.html

3,界面初始化

当用户已经输入成功过密码时,要自动登录进入主界面。

当用户第一次登录时,要进入登录界面。

而这个判断在哪里进行呢?是否需要一个Splash Screen?

这是一篇关于这个的讨论:http://stackoverflow.com/questions/553336/how-can-i-display-a-splash-screen-for-longer-on-an-iphone

不过按图索骥到这个讨论:http://stackoverflow.com/questions/685062/how-to-show-a-splash-screen-during-launch-of-a-cocoa-app

Peter Hosey的观点还是发人深省的:

Why not show a functioning app? Not necessarily fully functioning, but let the user configure prefs, add a new database to connect to, or whatever.

Don't just block the UI with a splash screen.

 

顺着这个思路,站起来走几圈,思考一下,果然找到了更好的解决方案:

1,直接进入登录窗口,按照保存的旧现场尝试自动登录,登录成功后进入主界面。

2,自动登录时,用户仍然可以在界面上交互输入新的账号、口令、登录方式,并点击登录按钮。

3,自动登录失败,提示用户,回到2.

4,在主界面,仍然可以随时切换到登录界面,选择重新登录其他服务器。

原文地址:https://www.cnblogs.com/tara/p/2354552.html