iOS 10了

上周升级 iPhone 到 iOS 10了。从2007年一代开始,那时候在中国是不发行的,iphone 是和电信运行商绑定的,从美国托朋友带回来,包装盒里还有 at&t 的 sim 卡。记得当时 iPhone 1 直接从美国带回来也只有3000不到,然后满屋子找回形针,结果找不到,再出去买一盒,接下来越狱破解等等,之前因为读了很多文章,还算顺利。

可惜 iPhone 1 借给朋友然后被偷了,后来直接跳到 iPhone4,一开始还需要越狱,后来为了安全也不做这个事情了。一路用过来,看着 iOS 从1.0到现在10.0。

swift 初学感想

之前说了,国内的swift书实在很一般,写得不太好,网站上有一些中文的教程和视频等,有个别不错,有些好像也不是免费的,没有多看。倒是国外有不少很好的视频作为初学者来说很好,当然,要翻qiang,youtube中好东西还是很多的。

国内的几个论坛上有一些资料,在github上开源的swift项目非常多,几乎涵盖了方方面面,当一门语言有很多人参与,自然整个氛围就会很好。有时候想,假设十年前就有github这样的环境,是否delphi这样的语言也可以有更好的发展,也不至于这么寂寥了。

swift本身是一种语言,只是现在只能用来开发ios或者osx的应用,因此学习swift等于有两方面的事情要做,一方面是学习swift的各类语法,先进的或者觉得奇怪的,另一方面是学习ios开发的规则,比如要显示一个pickupview,需要做的步骤,这方面和语言无关,实际上我就是拿着oc的书,进行操作,然后把语言换成swift在绝大多数场合都可以,并且没有繁琐的h文件m文件的切换。

现在看了标签、按钮、文本框、图片框这些最基本的,感受到了swift语言的亲民,以及apple工程师的确与众不同的思维方式,还是在想如果当年apple收购了delphi就好了,目前我还是觉得delphi在很多方面的设计要合理,包括c#,Anders的功底不是白给的,delphi和c#的面向对象条例要清楚的多,并且此类双路代码生成看来是有技术含量,xcode需要做的是把界面元素自己做这个链接或者拖到那里去,在delphi里面这些是自动生成的,我想这可能是我一开始很不适应oc的缘故,delphi中放一个按钮在窗口,这个按钮的引用之类的代码delphi自己会生成好,我只需要考虑如何调用之类,在xcode中,这是要自己操作的。或者是我理解偏颇。

pickerupview算是一个比较复杂的控件了,为了让pickerup显示一些内容,要自己调用好几个方法,可能习惯了就好,但我还是喜欢delphi和vb那种属性方法事件的写法,用对象的方法,然后传递参数搞定,对于c++基本不懂,是否swift是一脉相承,不清楚。所以,xcode的对象检查器,只有属性,而没有事件,如果要控制对象的事件,需要自己写。

存在即是合理。

iOS开发中的界面到底手写代码还是用Storyboard?

问起公司iOS开发的同事,原来他们都是用代码方式来构建界面的。这一点一开始让我比较奇怪,不过逐渐也习惯了,或许最早mac的开发者们的geeks气质过于独特了。

用delphi、vb的人都知道,delphi等强就强在可视化程序设计,delphi的ide在很多方面达到了非常高的境界,一些组件的design模式可以让程序设计基本不需要什么代码。但是可视化模式太强带来的问题也很明显,当年很多程序员很多程序在构架上考虑欠妥,导致程序难以维护。delphi开发环境因为拥有的大量优秀控件和强大的面向对象能力,即便到今天,还是综合开发能力很强的语言。(国内delphi式微了,但是国外的发展还是不错的,并且每年一个版本很牛)

这篇文章:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧,对于开发ios或者osx程序是否用可视化控件编辑已经说的很明确了:开发速度!

不得不说,国内有些程序员是略带矫情的,曾经在一个讨论swift的帖子上看到有个程序员说到,原来写oc那种类似天书的代码多有成就感啊。我就搞不懂了,写代码到底是为了什么,程序的目的是功能,而不是炫耀。Apple自己的所有软件都可以用可视化方式加上代码实现,我们没有必要人为提高门槛用代码来生成界面吧,如果纯粹是为了显得高深莫测。

之前看到那个闹钟的例子,这样想起来,就不太好了,为什么按钮啊、标签啊都要手工生成呢,apple和next前前后后几十年研究的interface builder为什么不用呢,即便是考虑不同分辨率屏幕等,xcode现在也有很好的解决方案了啊。(仔细看了xcode的auto layout之类,好像还是挺麻烦的,不如delphi的align等属性设置啊)

天下武功,唯快不破。开发效率高,总是好的。

swift之浅尝

apple的swift推出已经有一段时间了,国内之前赶进度弄出很多速成教材,后来也没有什么下文了。

公司目前的ios应用还是用oc,不过swift总是潮流,于是稍微看了一下,也买了一些国内的书。

记得很早以前学习vb的时候,起初也是一头雾水,当时看了一本很薄的书,是老外写的,国人翻译的,那时候的翻译还是比较有良心的,信达雅。

后来学习delphi,虽然界面和vb差不多,但是语法和使用方式和之前turbo pascal差别太大,并且编程思想和vb差别更大。记得当时整个市面上一共只有两本delphi的书,都是翻译的国外的书,其中一本我一直有印象是全篇一个故事,说一个独立程序员怎么接了一个项目,然后通过学习delphi,完成项目,在整个过程中,要不断学习提高用各种技术来满足变化的需求。

自然,上面这些书使得编程入门变得很容易。初步学会之后,虽然还是会有很多弯路和提升,但要理解每一门语言的博大精深就容易一些了。

国内,写得好的swift例子还不是很多,这个不错,在视频网站也有一些讲解视频制作的不错。可惜,还是少数。大部分的书籍和教程也就是把apple的文档或者老外写得一些东西翻译了一下,在说明的时候条理不清楚,不是站在学习者的角度。急功近利,太过明显。

swift从语言角度,很新,因此很多语言的优点都有体现,apple在开发环境上的努力也是众所周知,swift值得跟进。

未来不远

特别爱看美国大片里面那类星际旅行的,特别喜欢看那些超牛的控制台,大屏幕的显示器,复杂的操作,互相之间的通讯,都是很cool的样子。

OSX升级到了10.10,于是有一部分未来的功能可以实现了,当iphone响起来的时候,我可以选择在电脑上接听电话,双手被解放了,用起来也方便,还很虚荣。

而新版本OSX和iOS的Handoff功能,使得工作连续也能够实现了,所谓一台电脑上copy另外一台电脑上paste其实已经ok了。在mac机上用浏览器查看的网页可以继续在iPhone或者iPad上查看,或许也有点矫情,但的确把设备串联了起来。

微软的windows让我们接受了图形化操作系统来控制电脑,这几年Apple的发力,让用户体验更好,革了很多传统包括传统电器和传统使用方式的命。未来一步步的就在眼前。

iOS 7, 革命或者是创新

从iphone 1代以及ios 1.1.4(这个版本印象比较深刻)到如今的iphone 5和ios 7,短短六年,这是一个伟大的公司,可以改变我们的生活。

诸如市场营销之类可以有很大作用,但是伟大的作品就是伟大,乔布斯以及无数apple工程师的精心杰作,这是事实。否则,再好的市场营销也只能带来一时的欢呼,如同很多粗糙的国内的电子化产品。

白天,作为一个管理软件开发项目的我来说,深深的感受到我们的方法论的确还有很大问题,和国外的严谨细致相比,差距不小;另外,我们的产品设计由于种种原因,急功近利,要想完美,真的很难。在手机、电脑领域,大概也只有魅族、小米等稍微好一些了。

耐心、认真,站在用户的角度考虑问题,何其难啊!要拒绝很多诱惑。所谓十年磨一剑!

ios7

delphi xe4 for iOS 学习笔记之一:创建简单的sqlite数据库程序

目标:
1 连接sqlite数据库
2 显示sqlite数据库中的内容
3 增加记录操作

iOS 模拟器屏幕快照“2013-9-11 下午1.59.47”

 

上面的图是ios模拟器的效果,open按钮打开sqlite数据库,add按钮增加一条随机记录,也就是只有数字的那些。只有寥寥几行代码。

整个例子基本跟着这里做:http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorial:_Using_SQLite_in_an_iOS_Application

数据库连接什么的都很方便,并且通过分发的设置,不用担心路径问题。不需要自己写什么东西。

我用的是listview来通过binding和数据表的字段关联,同样不用任何代码,建立好对应关系即可。

增加记录用了简单的sqlquery中带参数的sql语句而已,和ios没有太大关系,包括随机数函数之类,delphi几十年积累的好东西都延续到了ios平台。

ios_study_20130911a

 

上图是delphi xe4中的开发状态。

下面是所有的代码:

procedure TfrmSqliteTest.btnOpenSqliteClick(Sender: TObject);
begin
  test_sqlite.Open;
  common.Open;
end;

procedure TfrmSqliteTest.btnAddRecordClick(Sender: TObject);
begin
  SqlQueryInsert.ParamByName('cm_money').AsFloat:=RandomRange(100,2000);
  SqlQueryInsert.ExecSQL();
  common.Refresh;
end;

procedure TfrmSqliteTest.test_sqliteBeforeConnect(Sender: TObject);
begin
{$IFDEF IOS}
  test_sqlite.Params.Values['Database'] := GetHomePath + PathDelim + 'Documents' +
    PathDelim + 'money.sqlite'
{$ENDIF}
end;

我觉得几乎不需要解释了,connect连接相关的就是为了分发到ios模拟器或者iphone真机上做准备的,因为ios还是有一套完善的sandbox机制的,需要遵循。

 

开始分享delphi xe4 for iphone的学习

我觉得大部分的程序中的80%是基础的模块,所以我觉得80%的程序员其实也是和我一样是平凡的,不是大牛。

其实,大多数行业都是这样的比例。

这也不光是职业的规律,人生大概也如此。

所以,作为一个平凡的程序员,当然年龄的确比大多数程序员大,和我一起开始编程的,大部分都不再是程序员了(其实我也不是,编程已经是业余爱好了)。分享一下。

delphi本身的语言能力很强,而易博龙从xe2开始引入的firemonkey框架,到了xe4的确更加强大了,用delphi进行智能手机开发,进行iphone开发(以及已经看到的xe5 for android),至少是一个选择。

我自学delphi xe4 for iphone的程序放在了github上,地址: https://github.com/wingfish/delphi_mobile_study

现在只有一个例子程序,文档要延后补了。

我从十年前就不想介入到什么语言好的讨论,合适就行,包容的心,这也是成熟的标志吧!

2013.9.: iphone 5s 5c 这次是真的了

应该没有意外了,2013.9.10. apple要宣布iphone的新款了,功能强大的5s,颜色鲜艳的5c。肯定ios 7也同步发布正式版了,而ios7中的糖果色怎么看就是5c中的那些颜色,apple继续时尚,继续潮流。

从iphone一代追到现在,从曾经的越狱破解等,到现在还负责app开发,人生的轨迹看似简单,其实有太多想不到。