For:
UITableViewCellsUICollectionViewCellsUITableViewHeaderFooterViews
If not reuse, it will create one each time a cell is displayed which impacts scrolling performance.
Remember to reuse
- headers and footers
- supplementary views
For:
UITableViewCellsUICollectionViewCellsUITableViewHeaderFooterViewsIf not reuse, it will create one each time a cell is displayed which impacts scrolling performance.
Remember to reuse
Opaque means no transparency defined. If not set, it will impact performance, especially the animated UIs.
Why? iOS needs to go deeper into the view hierarchy to figure out what color to render.
How? Use Debug\Color Blended Layers option to locate non-opaque views.
Notes from NSError
domain: the subsystemcode: error code within that subsystemuserInfo: a dictionary, contains all other detailsAlso available: localizedDescription
Run the block of code before leaving the current scope. Similar to “finally” in other language’s try/catch block.
美国驾照笔试有这样一题:
当你刹车失灵,你应该选择撞向:A)前面的路人;B)左边的动物;C)右边的加油站油桶
你的回答是?
你考的时候没有遇上这一题,是你走运,因为正确答案是D(文末揭晓)。
好了,其实至今交通部还没有出这么变态的道德题,若一定要答对类似以上题目,才能拿到驾照,没有哪个人有资格开车。
但奇怪的是,现在有人要求自动驾驶系统必须答对以上问题,才有资格上路。
德国最近出台一套自动驾驶规范框架,明确指出,自动驾驶算法必须做到,不惜牺牲动物和建筑,保证人员伤亡最低。
这种立法,出发点是好的,执行起来是不实际的,长远来说是危险的——道德绑架了科技。
先别考虑动物和建筑,光立法要求在技术上要做到所谓的“保证人员伤亡最低”,本身就是一个笑话。
想象一个场景,你的自动驾驶汽车刹车失灵,前面是路人,左右都是悬崖,让我们展开思想实验。
车上只有你一个人,前面是两个路人,为保证人员伤亡最低,你的车子于是一头栽下悬崖。
且慢,为求不死,你一般都是拖家带口出门凑人数的,还恨不得把整条村的人都带上,尽管道德上讲并不高尚,但保命要紧。因此以后大家买的都是7座车,或者17座车,又或者是170座车,反正出门人多更安全。
笑话现在才正式开始,我带大家看看具备执行“伤亡最低”能力的车都要装备一些什么黑科技。
1)要知道车上当前载客量,车子应能准确自动感应人数
2)应能感应孕妇,加一人,如果双胞胎,加两人,如此类推(好强大的隔空超声波)
3)怀胎十月算一个人,那怀胎十天呢?十个小时呢?十分钟呢?这已经不是技术问题,而又是另一个道德难题。当然人无法“正确”回答的这一题,我们又可以一如既往的要求算法去正确解决。
4)要知道前面可能被撞的人数,车子要精确遥感,当然了,要做到伤亡最少,当然又要遥感孕妇和双胞胎等(越来越黑的科技)
5)要做到伤亡最少,还需要建立各种数学模型,去模拟各种情况,例如路人是站着还是迎面走来,骑车的还是走路,年轻力壮还是老弱病残,如果是人群的话,是一字排开还是方阵。一切都需要精确建模,才可以预测如果真选择撞人的话,伤亡的结果。这又是很黑的科技。
6)当然了,栽悬崖的伤亡也同样需要类似的算法。考虑的因素还得包括落差高度,山坡斜度,树木的数量,树木种类,当时风向,不一一罗列,反正也是很黑的科技。
所以立法要求自动车必须正确做出“伤亡最少”的决定,看上去很高大上,实际完全不可能实现,只是粗暴的用道德去绑架科技而已。
其实如果再加上考虑要求自动车先牺牲动物和建筑,也同样存在各种道德和技术的问题。
1)如果那路人是刚从刑场逃出来的死刑犯
2)如果那动物是一条在灾区救过很多人的搜救犬
2.5) 如果那是你家的狗
3)如果那动物是濒临灭绝的
4)如果那动物是万圣节装扮成可爱熊猫的小孩
5)如果那建筑是油站(牺牲建筑的同时,可能牺牲车里的人和建筑物里外的人,于是又要建模,撞什么建筑,怎么撞,会有怎样的伤亡,黑科技)
《三体》里面最后人类唯一可以幸免于难的方法,就是制造曲率驱动的飞船,但是因为在道德上通不过,结果还没研究出来,被严禁了。小说描绘的就是现实生活中的这种道德绑架科技。
简单的说,就算发明了下水救人的机器,也要机器正确回答“先救老婆还是先救老妈”,否则,就算眼睁睁看着淹死人也不能让机器乱救人。
其实,现在的深度学习,人类负责提供样本和标签,甚至人工智能自己去总结,很多时候我们只得到一个最优结果,但并不了解机器做出这种选择的依据。所以提出要先撞动物再撞人的规定的人,还停留在程序员一个一个条件编程的思维框架。
以我现在有限的了解,和在可见将来的科技发展,我们只需要要求自动驾驶的人工智能做到:尽最大努力不发生碰撞和坠落,永远不主动去挑选碰撞目标(除非那本来就是用于碰撞的,例如下山的紧急缓速路障)。
这并不完美,从道德上,这种设是把乘客的生存放在比较高的优先级。但其实百多年来,车的设计就是优先车内人员的,否则车身就不用金属而用棉花。想象一辆车的卖点是“无论乘客伤得多重,保证车外的人和物毫发无伤”,你会买吗?
十年以后,驾照笔试真的会有这样一题:
当你刹车失灵,你应该选择:。。。
记得要钩选 D)马上开启自动驾驶功能。
那时候,答错了这题,可就拿不到驾照了,呵呵。
Notify objects when changes to properties of other objects. Very similar to willSet and didSet, but they can be defined outside of the type defination.
observation = observe(
\.objectToObserve.myDate,
options: [.old, .new]
) { object, change in
print("myDate changed from: \(change.oldValue!), updated to: \(change.newValue!)")
}
Why? UI rendering (UIKit) works in the main thread.
How? All heavy lifting (time-consuming) should be moved out of main thread, including:
又是每年一度的世界自闭症关注日,我觉得应该记录下一些想法。可能要分几篇写,最近想法很多,有些相互很冲突,需要时间梳理。
对自闭症的研究,很奇特,不像其他的症,自闭症儿童不乏有财有势有智慧有号召力的各个社会阶层的精英父母,样本也不少,但至今并无突破或定论。所以,更应该感谢还在这方面不断努力的人,无论是宣传科普,还是出谋划策,无论是组织慈善团体还是开展科学研究,都是让每一个人更了解这个越来越大的人群所贡献的力量。
好了,说说我的理解。不断提醒自己,就如盲人摸象,勇于相信自己已经碰到真相,但未必是真相的全部。
眼神接触(eye contact)
没有眼神接触,是一个显著特征。
首先,是不是真的没有,还是只是你没有看到?你的眼神表情,他刚才已经扫了一眼,印在脑里。他们眼脑的速度,跟正常人可以不在一个数量级。他能随便扫一眼,在半秒之内,从照片中找出那只猫(反正当时我是目瞪口呆了)。凭什么就不能扫你一眼,就跟你完成他所需要的、你所谓的眼神接触呢?
其次,眼神接触不是目的,而是手段,对于一般人,这种手段能达到令沟通更有效的目的。就如同一个不记键盘的人,通过盯着键盘字母按键这一手段,达到更加准确输入的目的。但是对于按键分布图已经印在脑中的人,打字时并不需要,甚至不愿意跟敲下去的键有所谓的『眼神接触』,盯着的是屏幕上打出的字,甚至连屏幕都不看,眼睛放空并把注意力集中在后面将要敲出的文字。另一个类似的例子就是开车,新手总爱盯着方向盘,熟手盯着前面的路,老手大部分时间注意力都在百米远处的路况。区别在于,你脑中有多大一张图,而要填充图中各种细节,各自需要多久的眼神接触。
还有,他并不只对人缺乏一般定义上的眼神接触,他对很多事物都没有进行一般定义上的眼神接触(也就是『认真看』),甚至没有进行一般定以上的接触(也就是『认真留心』)。但只要机缘巧合,你会发现他已经认真看完了,留心的很,而且印在脑里的比我们想象的快且深。所谓『机缘巧合』,说的是要走进他们世界的门并不是容易找到的。然而不容易找到门,并不意味着门后不是一个精彩的世界。有时间我再记录一下对这方面的理解。

UIControl actions will send events to a chain of responders, if the 1st one doesn’t implement the action, then it goes deeper to the 2nd one, till it’s handled or no more responders in the chain.
What? Since override is support by Swift, it has to be determined at runtime what methods/properties to call, so an indirect call cannot be avoid.
When performance is important, to minimize and help compiler optimization, use private, final access levels to declare methods/properties.