iOS 开发者的故事
这篇文章是我在公司技术分享会上的演讲稿,里面有很几个有趣的小故事,涉及到技术的部分没有详细写,大家喜欢的话可以随便看看.
以下为正文内容.
今天我也不吹比,外边那些大数据,云计算,区块链,人工智能,物联网听起来很高端,但现在离我们还比较遥远,今天我来让大家了解 iOS 开发,说是 iOS 开发,其实也是教大家用程序员的思维看待问题,尤其是在座的非程序员的各位
我记得很早以前朱总监就说要做一个技术分享会,后来也没有做,我当时是很希望有这种交流的会议的,可以让我们了解一下相互之间的工作都在忙些什么,现在有了这个机会我第一个来说,心里还有点小荣幸.
首先我先问大家一个问题,一个 iOS 程序员是做什么的?换句话说 iOS 开发是做什么?
就是通过写代码,把王婷的设计图变成可以运行的程序.
在我们公司还顺便给同事修电脑.
其实这个命题我本来想了一下,觉得大家可能对怎么开发一个 iOS 程序没有什么兴趣,但我还是想给大家讲一下,因为创造,真的是一件很有趣的事情.从我讲的这些东西里你能看到一个应用是如何从一张设计图变成一个可以运行的程序的.请大家放心,我尽量少涉及到与代码相关的知识,如果我的讲解有错误,敬请大家指正,另外在我讲的过程中,大家有任何问题都可以随时问我,我会尽量给大家讲解清楚
我先花1分钟时间给大家介绍一些基本概念,大家应该都懂,但我还是啰嗦一下,因为我笔记都做了,不能白做
1.什么是 iOS 开发 : 制作用于 iOS 能够运行的软件
开发语言 OC : 面向对象,基于 C 语言的封装,也可使用C,C++,swift
开发工具 Xcode : 只能用这个
开发系统 Mac : 也是只能用这个
什么是 App : Application 的简写,简称"爱普",不是apple,
开发流程: 需求-设计-(开发)-(测试)-上线-维护
上架流程,打包,(签名,加密),上传,审核,发布
ipa 文件,主要大小是图片和第三方库
是不是听起来觉得好无聊啊,我也是这么觉得的,要是这么讲下去估计大家都睡着了,所以,趁着大家还没睡着,接下来我尽量以讲故事的方式让大家对 iOS 系统感兴趣,我知道大家肯定都不喜欢听我讲代码,所以我给大家讲故事,也顺便卖弄一下自己的知识~接下来我给大家讲一个 iOS 系统和苹果手机研发的故事.
我先讲 iOS 系统的故事吧.
故事还得从上世纪80年代说起,乔布斯把卖可乐的约翰•斯卡利请进公司当CEO,乔布斯说了那句著名的话:你是想卖一辈子糖水,还是想改变世界。 从某种意义上说,约翰•斯卡里确实改变了世界,只是改变世界的方法比较奇特。约翰•斯卡利当上苹果公司CEO不久后,就把乔布斯哄出了公司。
苹果的早期投资者之一,亚瑟•罗克曾经说过:对乔布斯来说,最好的事情就是苹果公司解雇了他,叫他滚蛋。因为乔布斯离开苹果以后,就自由了,他经历了一系列巨大的失败,从而变的成熟。不管怎么说啦,反正,约翰•斯卡利就通过这种方法,间接的改变了世界,比卖一辈子糖水强。
乔布斯被苹果扫地出门以后,找了一些投资人,组建了另外一家电脑公司,名字叫做NEXT电脑公司。有人说他是为了复仇,他自己说他是为了改变世界。
再接着回来说离开了乔布斯的苹果公司,当时的CEO已经是一个叫阿梅里奥的人,乔布斯对他的评价是:最差劲的CEO。乔帮主的话,听听就行了。这个阿梅里奥刚开始当CEO的时候,苹果要倒闭了,他离开苹果公司的时候,公司已经盈利了,账户上还有30亿美元现金。这些和本文要说的事情关系不大,省略掉。关系比较大的是,就是这个阿梅里奥,虽然挺会赚钱,但是不懂技术啊。在1996年的时候,他很开心的向用户宣布,苹果公司要发新的系统了,名字叫做System 8。非常的先进,苹果的粉丝们兴高采烈,就等着秋天发布正式版。
但是,实际情况呢?这个System 8根本没法用!甚至连文本文件都不能编辑,为了展示的需要,用户界面上的按钮都是图片,没法点。做展示的时候,就是靠一张照片来忽悠观众。在苹果公司内部,懂技术的心知肚明,这玩意别说秋季了,内部员工开玩笑说,System 8的正式版,至少得50年后才能发布。也就是说,如果50年后的话,应该是2046年,从今天算,还得等18年呢。公司CEO不懂技术没事儿,苹果公司还是有牛人的,这个牛人是个女士,名字叫Ellen Hancock(艾琳,汉考克), 是苹果公司的技术总监 CTO。乔布斯对此人的评价是: 这女的就是个白痴。能让乔帮主评价为白痴的,也是个牛人。一般人连白痴都算不上。该女士还是非常猛的,她一下子就看出了System 8根本没戏。在她的坚持下,System 8项目被取消,因为她知道根本不可能让这个系统运行起来。她决定一方面把原来的老系统改吧改吧,糊弄一下用户,另一方面她知道老糊弄也不是办法,看看能不能买个现成的操作系统来。
当时进入苹果公司眼睛的有两家,分别是BE的BeOS操作系统,还有一家就是乔布斯新建的这家叫NEXT的公司。这两家公司都有自己的操作系统。BeOS和Linux差不多,但是比Linux要好用。
当年这家BeOS的公司呢,感觉自己的操作系统很厉害,要价就特别高,说是要4亿美元。苹果公司刚开始开价是1.2亿,后来涨到2亿。结果这个Be公司的CEO,不肯松口,4亿,少一分也不卖!然后,苹果就买了乔布斯的公司,乔布斯公司的系统是NeXTSTEP。这个系统,就是我们今天用的苹果手机的系统的祖宗。
铺垫了这么久,终于引出来了,iOS系统就是继承NeXTSTEP系统而来的。所以,每一行代码写的都是历史!至今为止,我们 iOS 代码里依然能看到 NS 前缀的单词,比如字符串, String, 在我们开发的时候要写 NSString,数组 Array, 我们要写 NSArray, 字典是 NSDictionary, 这些带 NS 前缀的,都是NeXTSTEP系统的框架.
NeXT公司被收购以后,乔布斯也就顺理成章的回归苹果公司,开始着手基于NeXTSTEP系统,开发新一代的操作系统,就是Mac OS X系统。
操作系统需要一个内核,乔布斯当时就动了脑筋,要不把Mac OS X系统的内核换成Linux算了。然后,在多方的筹备下,Linux的创世人Linus就去拜见了一次乔布斯。乔布斯也知道Linus的牛脾气,Linus的脾气不好,这一点和国内的大牛有共同之处,开口就骂,这些牛人确实都是火爆的脾气,乔布斯也是一言不合就开骂。哎,我脾气很好,所以... 编程技术很菜!据说,乔布斯这个暴脾气还表现出礼贤下士的样子,接见规格搞的挺高,把NeXT的CTO等技术骨干都拉来参加会议。会议的经过我也不知道,但结果就是谈崩了,我只能猜测,Linus这种大神,他连比尔盖茨也瞧不上,乔布斯估计他也不放在眼里。一山难容二虎,不过,后来两人都很默契的没有提到这次的会议内容。估计,火星撞地球,绝对不是什么好事...
后来Android发展起来以后,使用的内核就是Linux,如果当年Linus答应了苹果,说不好,现在所有的手机都是Linux内核,这都是后话了...
接着说苹果,在乔布斯的麾下,名将如云。并不是网上总有人说,苹果没啥创新,苹果在技术方面的创新,多了去了,多到再弄一个 iPhone 也用不过来。后来,这个系统基于 Unix 内核,做了大幅的修改,被塞进了一台手机里,这台手机就是iPhone。当时这个系统被命名为 iPhoneOS.
每次点击,点击的都是历史,每次启动,启动的都是文化。我觉得作为一个苹果手机的用户,有必要知道一点苹果手机的历史。
接下来是苹果手机 iPhone 的故事
当我真正成为一个开发者的时候,才能体会到苹果做一个开创性的产品是那么困难,用鸡汤一点的话来说,真是吃的苦中苦,方为人上人。苹果由一个当时频临倒闭的公司,到一度成为市值最高的公司,肯定不是网上有些人说的,脑残粉多,说实在的,哪里找这么多脑残粉啊。
2007年1月9日,在旧金山的Macworld大会上,乔布斯说道:今天,我们将推出三款技术性产品,第一个是宽屏触控式iPod,第二个是一款革命性的手机,第三是革命性的互联网通信设备。随后,他又重复了一遍以上的话,然后他问道:你们明白了么?这不是三台独立的设备,而是一台设备,我们把他称为iPhone。台下爆发出雷鸣般的呼喊声。
此时,在观众席的第五排,有几个人的脸色凝重,明显带着紧张的表情。这五六个人手里,每个人拿着一个酒杯,大口大口的喝着威士忌。他们是iPhone小组的核心成员,只有靠着血液里流淌的酒精,才能缓解在现场的紧张。台上的乔布斯每演示完一个功能,台下的工程师就喝一杯威士忌。终于,在压力和紧张下,他们创造了历史。
在这几个工程师里,有一个负责iPhone无线电通信部分的工程师,他叫格里尼翁,是负责iPhone如何打电话,如何连上网络。无论手机的功能有多复杂,但是最核心的功能之一,就是打电话,如果不能打电话,就不能称之为手机。为了这场至关重要的发布会,格里尼翁耗尽了心血,在开发iPhone的两年时间里,他体重增加了50磅,在公司里,为了能及时的补充酒精,缓解疲劳,他甚至在办公室里放了一个酒柜。
格里尼翁是苹果公司的老员工了,到2007年iPhone发布前夕,他已经为苹果工作了15年。不管是网上还是传闻中,乔布斯的脾气是出了名的火爆,即使像格里尼翁这种不可多得的天才工程师,乔布斯也是毫不留情。格里尼翁曾经说过,被乔布斯痛骂以后,感觉自己身高都矮了一大截。乔布斯曾经骂格里尼翁Fuckchop,啊就是杂碎的意思,后来这个家伙还把Fuckchop印在了名片上.可能他感觉被乔布斯这种牛逼的骂一顿也是一种荣耀,是你足够牛逼的体现,如果你不够牛逼,乔布斯连骂都懒得骂你.
为什么要提这个人呢,因为早在1993年,他就在苹果公司为一台夭折的项目——牛顿掌上电脑——开发软件和硬件,随后在2000年,他去了Pixo公司,两年之后,他开发的Pixo软件被安装到一台设备上,这台设备就是后来帮Apple东山再起的iPod。iOS 系统有很多功能都借鉴了这个 Pixo.所以说牛人就是牛人,既能做播放器的操作系统,又能做硬件,还是通信部分的核心硬件.
2005年,苹果已经卖出去了3200万台iPod,当时所有人都期待苹果能出一台手机,苹果内部就有一大群高管围着乔布斯,让他出手机.外部也都预测苹果下一个产品就是手机。在2004年底,乔布斯终于被说动了,着手准备研发手机。
研发手机的时候,困难重重,光是原型机,据说就弄了6套。这里说的6套不是说弄了6个皮肤,而是不同的硬件,不同的软件,总共是六套。如果分开来算的话,60套都不止,苹果公司甚至开发过一台Linux版本的,但是,没法满足需求。乔布斯希望能开发一个OS X系统的,但是耗电太快,而且手机的CPU速度也不够快。
由于处于非常早期,当时甚至没有硬件环境让工程师测试,工程师就购买了一些硬件发烧友的电路板来测试。乔布斯就说:那我们从Mac电脑里面的通讯录开始,看看能不能让通讯录以每秒30到60帧的速度滚动名单。如果速度不够好,那我们就麻烦了。幸好,他们在电路板上做到了。我在看初代 iPhone 发布会的时候,已经是成为 iOS 开发者一年以后的事情了.初代 iPhone 给我最大的震撼就是当乔布斯使用手指滑动通讯录的列表的时候那流畅的动画效果和滑动到顶部的回弹效果,这个效果和我手上iPhoneX的效果一模一样,我反复地看了三四遍这个画面,每一次都忍不住起了一身的鸡皮疙瘩.很难想象这种动画效果是一群天才工程师在一堆简陋的电路板上想办法实现的.
苹果最初设计iPhone的时候,最初并没有采用玻璃屏幕,而是采用的有机玻璃来生产iPhone的屏幕,说白了就是塑料。当时,乔布斯和高管都认为,屏幕一落地,如果是玻璃屏幕,就会碎了,不如用有机玻璃结实。直到有一天,乔布斯把一部塑料原型机和钥匙串放在口袋里,随身携带,后来发现屏幕被磨损的不成样子了。乔布斯就问身边的一群人:这屏幕是怎么回事儿?
当时一个见证人这么描述,一个中层管理人员拿起原型机狡辩说:行了,史蒂夫,我们有一部玻璃的原型机,但是没能通过跌落测试,巴拉巴拉的狡辩了好几句。这时候,乔布斯瞪着他,恶狠狠的问了一句:你告诉我你他妈的能不能把这个破玩意搞定!当时已经是2006年9月份了,还有4个月,iPhone就要公布于众,在这个节骨眼上,乔布斯希望换掉iPhone最重要的部件之一,屏幕,这换谁也受不了!
后来乔布斯通过他的朋友约翰西利布朗找到了当时康宁公司的CEO,温德尔维克斯,乔布斯直接拨通了康宁公司的总机,说想和维克斯通话,结果康宁公司的助理说,和我说吧,我会转达给CEO。结果乔布斯火了,说,我是乔布斯,让CEO接电话,结果这个助理把电话挂了! 乔布斯只好打电话给他的朋友,抱怨这件事儿,说自己受到了侮辱之类的。康宁公司的CEO维克斯听说了这件事后,就打电话给苹果公司总机,说要找乔布斯通电话,结果苹果公司总机更狠,让维克斯写一份申请,先传真过来再说。乔布斯也知道了这件事儿,最后乔布斯还是邀请维克斯来苹果公司会谈,说自己需要一种硬度超强的玻璃,能不能制造?后来康宁公司真的制造出来这种玻璃,这就是传说中的康宁大猩猩一代.这个iPhone的玻璃强度非常高,是用在高铁或者直升飞机上的,硬度非常高,玻璃本身的硬度就比钥匙串高,何况这个还是加强版本的玻璃.
第一代iPhone的玻璃不像现在iPhone的玻璃,现在的 iPhone 玻璃还有一定的弹性,是经过逐代的改良得来的,这个得提一下中国的玻璃制造商蓝思科技,做手表玻璃的公司,当时是这家中国企业解决了苹果公司的难题。蓝思科技的CEO叫周群飞,是中国的女首富。iPhone手机的玻璃非常薄,只有0.3毫米厚,和一张白纸差不多。iPhone玻璃破碎以后,也不会像普通玻璃一样,碎成一片一片的,容易割伤,iPhone玻璃碎了以后,也是一个整体,有点像汽车挡风玻璃。在蓝思科技的帮助下,iPhone 的玻璃变得如同钢铁一般又硬又有弹性,透光度还好.
讲完了玻璃,再说说触摸屏。在2007年苹果发布会上,台下坐着两位台湾人,他们两位也是泪流满面,这两个台湾人是触摸屏生产商宸鸿(TPK)的老板姜朝瑞和 CTO张恒耀,就是这家公司,研发成功了“透明玻璃投射式电容技术”,如果没有这个技术,iPhone最惊艳的技术之一,滑动,双指缩放可能就没有了。当时的手机都是电阻屏的,现在电阻屏手机上越来越少了, 电阻屏就是得用力按才有反应,还得配一根笔,如果经常修剪指甲的人,不好用,也点不准,而且不支持多点触控,只能识别一个点。
关于宸鸿和姜朝瑞,就简略的说一下。宸鸿公司是做CRT显示器的,就是古老的电视一样,后面有个大屁股,一台显示器得20kg那么重,1995年姜朝瑞开始做触摸屏,这时候离iPhone发布还有十几年时间。在2004年,姜朝瑞当时还没和苹果合作开发电容触控屏,他就去芬兰向诺基亚推销电容屏,诺基亚根本不理他。后来苹果开始和宸鸿公司的CTO张恒耀联合研发电容式触摸屏,研发了两年。每过几个月,这个CTO就和姜朝瑞汇报说:老板,太难了,咱们放弃吧。然后姜朝瑞先痛骂一顿,再鼓励鼓励,这个CTO又回去干几个月,过几个月这个CTO又回来说:老板,咱们放弃吧... 然后姜朝瑞再痛骂一顿,再鼓励鼓励,又回去干几个月,据说,反反复复的,骂了9次,鼓励了9次,这个技术终于成功了。
从上边的故事可以看出来啊,一个开创性的产品能够成功,和无数人的刻苦努力是分不开的,我上边只是说了上边这少数几个人的故事,大家可以管中窥豹看一下研发 iPhone 和 iOS, 到底有多少天才科学家付出了多少心血和努力,才凝结成了你手上这一片小小的玻璃.为什么我把苹果手机称之为一片玻璃呢? 在苹果首席设计师乔纳森的心中,iPhone 设计的极意并不是什么超级酷炫的外表,而就是“一片玻璃”。
我喜欢苹果对于 iPhone X 的描述,我把这段话原文摘录如下:
一直以来,我们都心存一个设想,期待着能够打造出这样一部 iPhone:它有整面的屏幕,能让你在使用时完全沉浸其中,仿佛忘记了它的存在.它是如此智能,你的一触,一碰,一言,一语,哪怕是轻轻一瞥,都会得到它心有灵犀的回应.而这个设想,终于随着 iPhone X 的到来成为了现实.现在,就跟未来见个面吧.
其实苹果研发的时候,安卓也在研发了,不过,安卓当时仍然是带键盘的,是后来苹果发布了 iPhone, 安卓一看苹果这么惊艳,才取消了键盘,开始学习苹果的。
大家想不想听安卓的故事?我简单讲一下
现在市场上,除了苹果,就是安卓,当然还有windows phone和黑莓,但是后者还是太小众了,再说,黑莓也用安卓系统了。
在谷歌购买安卓之前,安卓团队在安卓之父安迪鲁宾的带领下,研发出来了一个非常小众的手机,名字叫SideKick手机,这个手机可以掀开屏幕,露出键盘,有点像超小型的笔记本电脑。这个手机用的就是安卓系统.安卓之所以是这个名字,是因为其创始人叫安迪鲁宾,安卓的意思其实是”人形机器人“这个意思。
这个安迪鲁滨以前也在苹果公司工作过,我也不多说了,这个可以留给雪瑾讲.2014年10月30日,谷歌宣布,Android操作系统的联合创始人及Android业务前负责人安迪·鲁宾(Andy Rubin)将从谷歌离职。谷歌支付给其9000万美元的离职补偿金,分四年发放,每月约200万美元。最后一次付款定于2018年11月。
现在我们都知道,安卓系统是谷歌的产品,当时谷歌 CEO 佩奇很有先见之明,他很早就认为将来是手机的世界,然后碰巧遇到安卓了,就花了钱把安卓买了下来。一共花了5千万美元.
在2005年7月11日,谷歌宣布收购安卓,在此之前的几周,安迪鲁宾曾经试图把安卓操作系统卖给三星,安迪鲁宾和他的团队一行七人去三星推销安卓,然后三星来了20个人,齐刷刷的站在会议桌旁边,等到三星的CEO进来坐下以后,这20几个人才敢坐下,用安迪的话来说,这简直就是个军事法庭。随后,安迪开始讲解安卓系统,等讲解完了,所有的人都不敢说话,因为CEO没说话,其它人不敢说。然后,CEO的助理和CEO低声窃窃私语了几句,之后这个助理说:你是在说梦话么?你们只有7个人,怎么征服世界?然后,这20几个人像接到了命令一样,开始一起嘲笑他们,可能是CEO定了个调子,这20几个人就一起上了。在接受了一番嘲笑和戏弄以后,三星很高兴,毕竟看了个笑话,心情应该很不错,安迪一行7人很失望,被嘲笑的感觉应该不好受,会议就这么结束了.结果两星期以后,谷歌宣布收购安卓,这时候,三星的一个CEO的助理,马上打电话给安迪说:能不能召开个紧急会议,三星也想收购安卓。
在被谷歌收购以后,安卓部门获得了很大权限,谷歌基本上是要钱给钱,要物给物,而且想招聘谁就招聘谁,谷歌完全不管。但是毕竟被谷歌收购以后,也得服从谷歌的一些规定,比如谷歌规定,公司员工不能开超过比宝马3系更好的车,当时谷歌公司的CEO都是开丰田的普锐斯,一款混合动力车,这款车的最主要买家就是那些大学教授啊,公司管理层啊,据说警察一看到开普锐斯的都不查,因为开这款车的人根本不可能是犯罪。而当时被收购的时候,安迪早就卖掉了好几家公司,他开的是定制版的法拉利,能买100辆普锐斯,所以,他也不好意思开车去上班了。
说道这里我也提一下苹果的薪酬体系,在高管薪酬方面,苹果公司奉行平等主义者:该公司的高层管理人员每年年薪基本互同,差不多是87.5w 美元,只有首席执行官蒂姆·库克例外,他是140w 美元。当然了,苹果公司的所有管理人员都可以获得基于公司业绩的现金红利。
被收购以后,为了解决Java的版权,花了不少钱,当时为了能让Java运行在安卓上,修改了非常多的代码.安迪当时是想开发一款运营商愿意推广,设备商喜欢制造,软件开发者愿意开发,用户热爱使用的手机操作系统。目前的情况来看,安卓应该算非常非常成功了。
安卓从一开始就是开放的,而不像苹果一开始就是封闭的,苹果向开发者开放权限已经是 iPhone3G 时代了,在此之前苹果根本就没有 AppStore,随iPhone3G 的发布,苹果向全球开发者敞开了大门.据说当年乔布斯死活不愿意开放第三方开发者权限,认为开发者的群魔乱舞会破坏 iPhone 的用户体验,而如今,App Store 上拥有接近300万个 app,在2016年为开发者带来了总计285亿美元的收入,苹果也从中获得了85亿美元的分成,仅2017年1月1日一天, App Store 就获得了2.4亿美元的收入.而乔布斯在 App Store 大获成功后接受采访时表示:"你看,我们当年的决策是多么的正确!"
在安卓还是个半成品的时候,苹果发布了第一台iPhone手机,当时一位安卓工程师说:说老实话,iPhone的发布对安卓团队是非常大的打击,我们几乎不知道怎么办才好了.但是安迪鲁宾不是轻易服输的人,在看到iPhone的时候,正在去开会的路上,他让司机赶紧路边停车,在路边看完了现场的发布会,然后和同事说:我们还是先不要发布我们的手机了,我们的手机没发布就已经落后了。在一周以内,安卓的团队就改变了策略,他们一定要开发一款超过iPhone的手机.
谷歌知道了苹果在做触控屏以后,谷歌也开始做触控屏。而且还从苹果的safari团队挖人,做谷歌chrome浏览器。
当时的苹果公司和安卓公司还是亲密的伙伴,共同的敌人还是微软,苹果公司发布iPhone的时候,甚至还邀请了谷歌公司的CEO施密特去台上讲了三分钟,并祝贺苹果手机大卖。而与此同时,在谷歌公司内部,为苹果公司开发地图,搜索引擎以及YouTube软件的谷歌团队,可以看到苹果的原型机,可以分析苹果使用的哪种CPU,哪种触控屏幕,可以说,除了苹果自己,谷歌最了解苹果手机。乔布斯甚至还为谷歌的图标找bug。所以后来安卓发布,这两家公司反目成仇以后,乔布斯说安卓是偷来的产品。在解锁上,苹果是滑一下就解锁,安卓是不能设置滑三个点解锁的,乔布斯说只要你设置滑三个点一条线解锁,我就告你。所以安卓手机有形形色色的解锁方式,就是没有右滑解锁.
iPhone 和 安卓手机的区别:顾名思义,最重要的是就操作系统 iOS 和 安卓,另外,iPhone 手机寿命普遍比安卓长
2.接下来我给大家说一下iOS 与安卓和前端的区别:
这也是很多不懂开发的人所关心的
我记得我以前第一次买 iPhone 的时候,买的是6P,首发6888元,当时我爸爸用的是华为 mate7,大概4500元,我那时候还没开始做 iOS, 只是对手机感兴趣,我拿着我爸的华为手机比了一下,大家可以看一下参数啊.
可以看出啊,除了价格,其他方面华为 mate7是全面碾压 iPhone6P 的,但是实际体验好像华为手机总是比 iPhone 差了那么一点,不管是应用启动速度,还是加载网页,还是应用使用过程中,这个华为手机总让人觉得不是那么顺手,有的时候你说不上来它哪里不太顺手,但就是会让人觉得 iPhone 比安卓更加自然和流畅.
当时我用 iPhone 拍出来的照片比我爸爸拍的更好看,我爸爸就问我说哎,你这个手机像素多少啊,我说800w, 他说我这个呢,我说1300w, 他就说,哎,那你的手机肯定是 真·八百万 像素了.我当时就特别痛恨那些可恶的手机厂商瞎宣传,什么真八核 假4g 微智核的,搞得消费者都不知道怎么买,前一阵子 Vivo 手机广告里还说"2400w 柔光双摄",这是怎么个2400w 呢,是前后两个摄像头加一块2400w,照这么算的话,华为最近出的 p20pro 最牛逼了,后置三个摄像头6800w, 前置2400w, 加一块一共有9200w 像素了.
在白板上列个表
语言:java/OC
工具:XCode,AndroidStudio,esclips
开源和闭源:开源不是不安全,闭源不是安全,开源能反编译,闭源可以打包,都无法修改系统源码
安全性:iOS> 安卓,沙箱机制,独立数据,不明来源的应用无法使用
数据互通:为啥不能互通?充值问题
打包上架: i 通过 App Store 下载, a 任何来源.顺序:打包,提交,等待审核,手动/自动发布
代码运行:i 基于原生 unix 系统运行 c 语言, a 基于java虚拟机运行
mac 和 windows 的区别:
安全性高,软件少,没法打游戏,速度快,可以自动保存工作内容
触摸板好用,好看.屏幕清晰度高,颜色准,速度快
快捷键是⌘而不是 control, 也不是 win, 关于这个快捷键还有个有趣的小故事:Susan Kare是Mac OS系统的设计师,她最开始在Mac OS中设定,所有的快捷方式都是黑色的小苹果苹果标志按键的组合,结果乔布斯看到下拉菜单以后大叫,“这里面太多苹果了!我们的标志滥用就没意义了!”所以Susan Kare把这个标志改成了 command,是命令,指挥的意思.指挥官就是 commander.
苹果于1994年推出PowerBook 500系列,它不但是首款配备触控板的笔记本,也是首个提供内置以太网支持的笔记本。以前的笔记本想要移动光标需要滚动一个小球,或者联想 thinkPad 那种红色的摇杆.
/*不讲
今天雪瑾不在啊,我拿她做的应用举个栗子(启动集货街),大家可以看到同样的数据加载,iPhone 比安卓快了一倍还多,这不是说雪瑾的代码写的不好,而是有的时候我们通过代码能做的优化真的很少,代码的执行效率对于我们这种移动端的影响可以说是微乎其微,手机执行一百行代码的时间可能和执行一行代码的时间差不多,剩下的优化都是操作系统级别的优化,这个用过 iOS11的大家应该都清楚, iOS11比 iOS12应用启动速度慢了好多,微信启动的时候更加明显,其实用的都是同样的代码,就是操作系统的优化.
其实 iPhone 比安卓快的原因还有很多方面,比如更跟手的滚动效果,这个上面已经提到过了,是苹果最先解决的技术问题之一,还有更快的应用启动速度,更好的内存优化,还有更强力的 CPU 等等,
其实这也体现在数据上,测试机构 Agawi 公司测试结果表明, iPhone 5 触屏反馈时间比同时期安卓旗舰手机快2.5倍,iPhone 5触屏响应时间只有55毫秒,而安卓旗舰三星 Galaxy S4 的响应时间则为114毫秒.在刷新率上,最新的 iPhone X 在 homeBar 的这就是许多人都觉得 iPhone 比安卓手机快的原因.
很多人忽略了苹果手机的 A 系列处理器,苹果用的是ARM的芯片。ARM就是专注微型低功率芯片,20世纪90年代,当时市场需要的是高性能的CPU,当时硅谷图形公司他们的CEO就嘲讽ARM的技术是雕虫小技。当时CPU的霸主是Intel,Intel的产品都是几百到几千美元,现在也是,ARM的处理器相对来说便宜多了。所以,很多的半导体生产商从ARM公司购买他设计的ARM处理器,根据不同的领域,再加入自己的设计,比如,使用ARM架构的CPU厂商有三星,MTK,还有高通,很多手机都使用高通的ARM芯片,比如有枭龙系列芯片,苹果的CPU也是高通。
苹果的 A 系列处理器一直都是 iPhone 打遍天下无敌手的王牌所在,就拿 iPhone 8 配置的 A11 Bionic (仿生) 处理器来说,有42亿个晶体管,集成了神经网络引擎.这款处理器一经推出,就被广大测评网络用来进行和安卓旗舰处理器 - 骁龙835 的跑分对比,结局是 A11 以压倒性的优势获得胜利,iPhone 8 Plus 跑分高达10472分,而安卓旗舰,搭载了高通骁龙835的三星 Note8 分数只有6564分,而骁龙845的跑分也只是达到了8500,连上一代的 A10 处理器都没比过, A10 当年还跑出了9210的高分.iPhoneXS上的 A12应用了各种什么仿生引擎,啊我也不懂仿生引擎是什么,但是距刚刚开完的苹果发布会上讲的,用于 iPadPro 上的 A12X 性能是初代 iPhone 的1000倍.1000倍什么概念啊同志们,1块钱可以坐一次公交车,1000块钱一天坐两次足够坐两年的公交车呢!
目前还没上任何手机的骁龙855 ? 10992
iPhoneXS A12 ?10912
iPadPro A12X ? 17995
标压 i5 8300 ? 13434
后来Intel也研发了自己的移动芯片,叫Atom,不过我没见过,也没用过。听说,耗电非常严重。
*/
3.开发术语简介
有人知道程序员的三大浪漫吗:
操作系统,计算机图形学,编译原理
这是每一个程序员的最终追求
要真正理解这三大浪漫需要如下知识:
应用数学,电子工程学,量子物理学,应用物理学,马克思主义哲学...如果你不是拉丁语系国家还需要会英语
但是今天我们不讲那么深啊
面向对象
讲个笑话:一个面试官和一个应聘者.
M:什么叫类Y:我这人实在,工作努力,不知道什么叫累
M:什么是对象 Y:我工作努力,上进心强,暂时还没有打算找对象
M:什么是包 Y:我这人实在,平常不带包,也不用公司准备了
M:什么是接口Y:我这个人工作认真。从来不找借口偷懒
M:什么是继承Y:我这个人...我是孤儿没什么可以继承的
面向对象开发的思想:过于深刻,不讲
前方高能警告,接下来我讲的东西比较硬,
类型:基本数据类型: int,flout,double,bool,string
类的概念应该类似于数据库中的"表"
有方法
方法分类方法和对象方法
对象有属性也有方法
类也是一种对象,称为类对象
常量和变量: let/var
公开变量和私有变量:public/private
静态变量和动态变量:static
类和对象:类是模板,对象是个体
类拥有属性和方法
封装:隐藏对象的属性和实现细节,仅对外公开接口,领导布置任务是一种封装
继承:使得子类具有父类的属性和方法或者重新定义,追加属性和方法等,单继承和多继承
多态:不同对象对同一消息的不同响应.子类可以重写(并覆盖)父类的方法.比如软件工程专业的学生,面对同一问题会给出不同的答案
包:bundle
数组和字典: i多类型.A单一类型,数组下标越界和字典取到 null 会崩溃
其实我们前端开发大部分时间都是在跟界面打交道,所以一个好的界面非常重要.
我们面向对象嘛,所以我就把应用看做是一个对象,一个女朋友,一个好的界面就像一张好看的脸,肯定我们大家都喜欢,然后这个女朋友用起来顺不顺手?这是界面逻辑和 UE 设计.这个女朋友家境咋样?学历如何?这是应用的内容.最后这个女朋友会不会跟别人跑了?这是应用的安全性.
代码规范讲一下,其实就是一个习惯的问题,有的习惯好有的习惯不好,就拿换行来说,我曾经看过一个漫画,讲的是这个世界的公司按照代码行数来算程序员的工资,结果诞生了一个叫代码缩行师的工作,专门给程序员代码缩行,这里也有大牛和菜鸟之分,有一个传奇的代码缩行师把谷歌Chrome的代码缩减至1行,而代码的运行效率提高了20%,业界专业分析师给这一行代码估值为30亿美元,.当然这行代码谁也看不懂,这只是一个漫画而已,其实都是假的,代码是不能按照行数来算钱的,代码行数不是越多越好,也不是越少越好.
界面: window,View,<div>
控制器: VC Activity Fragement(布局)
控件: UIKit 框架,安卓自己实现
跳转方式:有导航栏:pop,无导航栏:push
传值方式:直接传递,通知中心,代理(使用控制器父子关系类比),本地缓存
其实很多界面效果都不是它看起来的那样,而是使用了某种方式去欺骗用户的眼睛.比如 tableView 的间距,就是通过在无间距的 tableView 上画出间距来实现的,说到这里我想特殊说一下这个控件, tableView. 可以说这是我们打交道最多的复杂控件
控件复用:tableView
权限管理: 判断权限-向系统申请权限-使用权限
外部跳转:URLScheme,openURL
动画实现:帧动画, UIView 动画
阴影和圆角:系统自带,自己(图片)实现
网络请求: 第三方:AFNetworking,OKHttp,接口的一致性
内存管理: 栈,代码区,数据区,堆区,栈区
数据库:SQL,使用 sql 语句, FMDB,文件归档
代码封装: 把某一功能的代码封装成一个库或者框架
库和框架:开源:源码,闭源:.framework,.a(二进制文件)
造轮子和找轮子:很难找到真正适用的轮子
为什么我不愿意使用第三方库?
比如说找一个自行车轮,我在千千万万种不同尺寸不同宽度的轮子里找了一个和你说的大小差不多的.
你说换个胎吧,可以,这个简单,我把轮胎扒了换一个就行
你说换个辐条,这也行,就是麻烦点,我把辐条拆了自己做一大堆辐条换上了
你说感觉不太结实,加一下辐条的数量,这个就麻烦了,不过我也还是可以改的,我用上了电焊,锤子,锯子,改的时候还要小心翼翼不要把新换的胎戳破了
最后你说改完的不锈钢轮子的太重了,把不锈钢的车轮换成铝合金的,外观不变.这我怎么换?
可能你还不理解,不就是一个减轻重量的事儿吗?改辐条那么难的你都改了,优化一下,减个重量不能减?可以,但这意味着之前的所有改动都彻底重做.
大概就是这个意思拉.所以有的时候为什么我们都听说大互联网公司招了成千上万人?微信开发团队有多少人你知道吗?
有时候听说微信的开发团队有1500人?也有说30-40人一年就可以做出来的,我个人倾向于微信团队有一百人左右,因为我之前的公司,也是做电商的,iOS 开发有20多个,开发一个iOS软件最大的团队也就10个人,按照功能去划分,人再多就会面临没活可干的境地.
手动和自动布局:帧布局, autolayout约束, xib,线性布局,相对布局,绝对布局
界面适配:机型判断,没有等比放大
机型判断都是通过代码
代码调试:内存泄漏,耗电控制
WEB 页:webkit,UIWebView
runtime:不讲
长短连接:socket,http
推送机制:通过苹果服务器统一推送/安卓自己长连接推送
什么样的代码算是好代码,我认为需要满足以下4点条件:
[遵循规范]养成良好的习惯
[有意义的命名]见名知意,驼峰命名
[足够短的方法体]方法内的逻辑越少越好
[无歧义的行为]包括方法名,变量名应当无歧义
4.iOS 前沿技术
swift:底层开源,像 java,安全,快速,简单,第三方库少,需要混编,混编效率下降
weex和 RN: 通过 JS 创建原生控件,无法实现部分原生效果,需要对三个平台非常熟悉,热更新和新技术的不确定性
ARKit:太复杂,不实用
新技术固然炫酷,可也有不成熟的地方,技术只是用于实现目标的手段,我们真正要做的是实现目标,而不是使用技术
老技术的优点:更成熟,更稳定,更简单
人工智能,真正的人工智能是什么样的,23c 中禁止市区内手动驾驶
5,推荐软件 swift playground