Why·Liam·Blog

人生若如初見

属性观察者,类似于触发器。用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点:

  1. 不仅可以在属性值改变后触发 didSet,也可以在属性值改变前触发 willSet。
  2. 给属性添加观察者必须要声明清楚属性类型,否则编译器报错。
  3. willSet 可以带一个 newName 的参数,没有的话,该参数默认命名为 newValue。
  4. didSet 可以带一个 oldName 的参数,表示旧的属性,不带的话默认命名为 oldValue。
  5. 属性初始化时,willSet 和 didSet 不会调用。只有在初始化上下文之外,当设置属性值时才会调用。
  6. 即使是设置的值和原来值相同,willSet 和 didSet 也会被调用

示例如下:

原文: http://www.hangge.com/blog/cache/detail_519.html

阅读全文 »

只有用户批准后,APP 才能获取隐私信息,包括当前位置、日历、通讯录、提醒事项和照片。尽管 APP 利用这类数据后会给用户带来方便,但同时用户也会希望对隐私数据有所控制。比如,用户希望系统自动给照片加上定位信息,或者系统能自动找到附近的朋友,但当用户想关闭这些功能时,有入口可以关闭。

只有在你的 APP 明确需要个人数据时,再发出请求。请求获取私人信息这件事,会令人自然而然地产生怀疑感,尤其是人们没有看到必要性的时候。确保只有当用户在使用那些明确需要私人信息的功能时,再请求批准。比如,只有当用户开启了追踪定位路线的功能时,才请求用户批准获取位置信息。

当必要性不明显的时候,向用户解释为什么需要个人数据。你可以在系统自带的请求提示框内添加自定义文字。文字要具体而礼貌,这样用户才不会有压迫感。文字要尽可能短。不需要包含 APP 名称,因为当你请求的时候系统已经知道你的 APP 名称了。

只有当你的 APP 必须依赖一些个人信息才能运行的时候,才可以在 APP 启动时请求权限。

阅读全文 »

用户是通过触摸屏上的手势来跟 iOS 设备交互,在用户的预期中,下面这些标准手势在跨系统和所有 APP 中都有同样的效果。
点击。触发一个控制或者选择一个物体。

  • 拖拽。移动屏幕上的元素。
  • 轻滑。快速的滚屏或移动。
  • 横扫。当用一根手指操作时,可以返回上一屏(返回)、展示分屏功能(split view)中被遮挡的部分、展示列表中某一行的删除按钮、展示 Peek 中的操作项。当在 iPad 中用四根手指操作,可以在 APP 之间切换。
  • 双击。放大并且居中内容/图片,在已经放大的状态下缩小。
  • 捏。往外捏会放大,往里捏合会缩小。
  • 长按。若针对可编辑或可选中的文本操作,会展示被放大的光标位置界面;若针对固定内容界面操作,比如集合视图,会进入编辑模式。
  • 摇动。撤销或重做。

总的原则是:要使用标准手势。人们都熟悉标准手势,也不希望被迫学习新的手势来做同样的事情。不过在游戏或者其他沉浸式的 APP 中,自定义手势反而会增加乐趣。除此之外,最好还是使用标准手势,这样就不需要付出额外的发现和记忆成本了

不要禁止系统级手势。除了标准手势,还有一些其他手势会引发系统级的响应。比如控制中心(从屏幕底部往上拉)和通知中心(从屏幕顶部往下拉)。用户在所有 APP 中还是需要使用这些手势的。

不要用标准手势完成不标准的操作。除非你的 APP 是有特殊玩法的游戏,否则重新定义标准手势的意义会导致用户疑惑,增加理解的复杂度。

阅读全文 »

输入信息的过程总是无趣的。当用户还没开始做什么有价值的事情之前,就要求用户做大量的输入,用户可能放弃使用你的产品。

需要输入时,尽量提供选项。这会让数据输入的效率高,因为从预设好的选项中做选择这件事,总是比自己回答要容易。举个栗子,尝试使用选择器或列表来替代输入框。

可以的话,尽量从系统中获取信息。能自动获取的信息或者用户授权后可以获取的信息,就不要让用户提供了,比如通讯录、日历信息。

阅读全文 »

3D Touch 提供了一种新的基于按压的交互方式。在支持的 3D Touch 的设备上,用户可以通过用力按压来获得新的功能。这时候,App 会给出一个展现更多内容的菜单,或者播放一段动画。

在桌面上,对着 APP 的图标重按时会出现一个操作列表,让用户可以快速进入 APP 中的常用功能或者浏览有用的信息。比如说,在日历图标上重按后,可以快捷地新建日程,也可以显示日程中的下一个事项。

Peek(轻压)能让用户通过当前环境之上的临时窗口来预览一个对象,比如预览页面、链接、文件。用手指稍微重按某个对象,就可以实现 Peek 功能(在该对象支持 Peek 功能的前提下)。抬起手指,则退出 Peek 界面。

如果想要打开这个对象浏览更多细节,稍微加重按压该对象的力度,就会弹出全屏窗口,这个动作称为 Pop(重压)。

阅读全文 »

iOS 区别于其他平台的三个主要特征:

  • 清晰呈现

各种大小的文字清楚,图标明确易懂,不多余的修饰,由功能驱动设计,利用留白、颜色、字体、图形等元素巧妙地突出重要内容,引导用户行为。

  • 遵从内容
阅读全文 »

Swiftype 搜索最近停了,开始收费,不想收费又想有这个站内搜索功能怎么办?
可以用 Algolia 免费版!不仅免费,感觉上要比 Swiftype 要快,下面简单说下集成步骤。

官网地址 注册帐号

新建一个 INDEX 如图

来到 API-KEYS 页面,上面有后面需要的信息(记得还有上面的 INDEX 名)。

阅读全文 »

供管销 是在美国工作的时候我上司和我说的,他就希望将这家的产品打造成 一个 供管销 的完全体。

最近因为手头太紧,想了一堆莫名其妙的想法。

其中一个就是 供应 管理 销售 的平台。

其实这也不算是什么太新的想法,我知道很多企业都有自己的系统,但是由于永康处于文化相对落后阶段,再加上属于加工密集城市,并不适应于大型工厂的 CRM 或者 ERM

金华地区有 372181 家企业,其中永康有 43772 家。

阅读全文 »

Celery 是一个「自带电池」的任务队列。它易于使用,所以你可以无视其所解决问题的复杂程度而轻松入门。它遵照最佳实践设计,所以你的产品可以扩展,或与其他语言集成,并且它自带了在生产环境中运行这样一个系统所需的工具和支持。

Celery 需要一个发送和接收消息的解决方案,其通常以独立服务形式出现, 称为 消息中间人。

  1. RabbitMQ 功能完备、稳定、耐用,并且安装简便,是生产环境的绝佳选择。
  2. Redis 也是功能完备的,但更易受突然中断或断电带来数据丢失的影响。
  3. 不推荐把 数据库 用于消息队列,但对于很小的项目可能是合适的。你的选择包括:SQLAlchemyDjango Database
  4. 其他 除了上面列出的之外,还有其他的实验性传输实现可供选择,包括 Amazon SQS、Using MongoDB 和 IronMQ。
  5. 中间人概览

阅读全文 »

虽然我有美国研究生的学士学位,但是我感觉自己还是没有读过研究生一样。

我同学在香港读书的时候一直感叹研究生对他的改变。其实我一直不能理解其中的关系。

知道现在我有点是懂非懂的有一些感慨。

读不读研其实是个人的问题,有的人急着出来工作,有点人选择继续深造。

我身边有本科 GPA 低,但是去了跨国公司做高管,做经理的;也有放弃腾讯的 offer 毅然地去读研的。

阅读全文 »
0%