我们做技术的应该顺势而为,学会变通,符合潮流,才不致于“掉队”,甚至淘汰。
我大学读的是通信工程专业,移动通信是我们的专业核心课程。移动通信之前就是固定通信了,简单地说,就是在固定的地方进行通信的一种方式。移动通信的到来与发展,给通信技术与产业带来了巨变,使得通信不仅更便利,也更普遍。实际上,这次巨大变革反映出移动对于我们生活方式,乃至是生活思维所带来的巨大变化。曾看过一句话,“流动就是商机。”我顿时觉得,“移动就是生活”。我们每天都活在变化中,唯独只有适应变化,懂得变化,才能从容生活。大家说,是不是?
现如今,移动互联网如火如荼,已有当年传统互联网的火爆。任何新事物的生发,都是一种斗争的过程。虽说,移动互联网存在很多问题,但是,移动式的互联网确实给互联网技术和产业带来了变革,这是毋庸置疑的。甚至可以毫不夸张地说,谁正确把握了这个机遇,谁就会成为这个趋势的领头羊。我们看国内的一些知名公司,例如百度、腾讯、网易、新浪、华为、中兴等都在部署和进入移动互联网,并且力争平滑交接,甚至是全新的突变。腾讯的微信就是一个鲜明的事例。而一些新兴的公司也不甘示弱,例如做移动搜索的宜搜、做浏览器的优势科技和海豚等。总之,时代的呼召,公司应该响应。唯独这样,公司才能够生存与强大。
而对于从事软件研发与应用的朋友,从事移动应用的开发应该是大有用武之地的。毕竟,我们现在已经完全进入移动式的生活了。这样的生活里,不仅包括移动式的思维,也包括移动式的设计、架构、应用与服务。简而言之,一部分人使得大部分人更加便利地享受生活,而这一部分人在给大部分人带来便利的时候,也实现了自身的价值。所以说,移动生活,不仅对于移动应用开发者,还是对于移动服务享用者,又是一种全新的体验与生活。
因而,好好珍惜这生活,做一位出色的移动应用开发者吧。
温馨提示:生活是自己的,你对生活笑,生活也对你笑。
Unix大师听到学徒学习的计算机机房里出来痛苦的哭啼声,他打算要弄清这是怎么回事。
他发现学徒明显的满脸痛苦,眼泪在眼圈里直打转。“出了什么事?”大师问道。“你哭什么?”
“Unix系统太难用了。我每天要用四种不同的编辑器才能把学习任务完成,因为它们每种都不能单独的完成这些事情。”
大师自信的点了点头,问,“如果让去解决这个大麻烦,你打算怎么做?”
学生认真的思考了几分钟,表情一下子多云转晴。他兴奋的说,“这个问题的解决方法很显然:我要开发一个有史以来最好的编辑器。这个编辑器具有目前这四种编辑器的所有功能,而且更好用,速度更快。由于有了我的这个新编辑器,世界将会变得更美好。”
大师突然举起手,照着这个学徒的脑袋上打了一巴掌。大师年迈而且体弱,学徒并没感觉到很痛,但他对发生的事很震惊。“我做错了什么?”他问。
“愚蠢!”大师说。“你以为我还想再学一种编辑器吗?”
一下子,学徒被点化了。
ASIHTTPRequest有很多功能,所有功能说明都可以在其官方网站的相关文档中查到,限于篇幅,本章仅简单介绍一下如何使用ASIHTTPRequest来进行同步Http请求和异步Http请求。在后面的章节中,我们还会用到它的一些其他功能。
在使用ASIHTTPRequest之前,请确认已经正确安装,然后在需要应用它的代码文件头部,加入:
#import “ASIHTTPRequest.h”
这样就可以在代码中使用ASIHTTPRequest相关的类。
创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。
要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,例如图片、MP3,则调用responseData方法,可以得到一个NSData对象。
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}
一般情况下,应该优先使用异步请求代替同步请求,当在主线程中使用ASIHTTPRequest同步请求,应用程序的界面会锁定,无法进行任何操作,直到请求完成。
创建一个异步请求
上例中的同步请求,如果换成异步方式来调用,请求是在后台线程中运行,当请求执行完后再通知调用的线程。这样不会导致主线程进行网络请求时,界面被锁定等情况。
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// 当以文本形式读取返回内容时用这个方法
NSString *responseString = [request responseString];
// 当以二进制形式读取返回内容时用这个方法
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}