iOS App Distribution

iOS App 有不少分发方法,她们散落在 Apple 的文档中,并未归总到一处,所以本文对她们进行了总结,方便查阅。

首先我们简单梳理下这些分发方法,然后重点说明下 ipa 文件的安装方法。 Apple 制作的这张表格将分发方法归纳得很全:

Method Description
App Store Distributes your app through the App Store, signed with an Apple Developer Program distribution provisioning profile.
Ad Hoc Distributes your app to testers with registered devices, signed with an ad hoc provisioning profile.
The devices need to be registered in your developer account and are limited to 100 devices per product family per year. If you don’t want to use a portion of these development devices for testing, distribute your app using TestFlight instead.
If you are a member of the Apple Developer Enterprise Program, choose this option to test your app. Only members of the Apple Developer Program have access to App Store Connect and TestFlight.
Development Distributes your app to testers with registered devices, signed with a development provisioning profile.
Enterprise Distributes your app to users in your organization, signed with an Apple Developer Enterprise Program distribution provisioning profile.

虽然分发方法有很多,但可以分为两类:一类是通过 App Store 分发;另一类则是在 App Store 外分发。通过 App Store 分发时的流程很统一,都是上传应用到 iTunes Connection,等待审核发布,所以没有什么好说的。但是在 App Store 外发布时选择就多样了,我们既可以走像 App Store 分发那样流程的 TestFlight,也可以导出 ipa 文件然后安装。

下面我们介绍在 iPhone 上安装 ipa 的方法:

Install using iTunes

iTunes 12.7 for Mac was released on Tuesday with a major change in the app. Apple has redesign iTunes so that it focuses on sales of music, movies, TV shows, audiobooks, and podcasts. It no longer has an App Store for buying apps for your iPhone or iPad. Therefore, you can no long install your iOS App (.ipa file) through iTunes any longer.

  1. Download the .ipa file after the build completes.
  2. Open iTunes, go to App library.
  3. Drag and drop the downloaded .ipa file into the App library.
  4. Connect your device to iTunes and go to your device apps.
  5. Click Install button of the app and click Sync button. 
继续阅读

Web 面试题汇总(三)

1.介绍js的基本数据类型。

A:

  • Six data types that are primitives:
    • Boolean. true and false.
    • null. A special keyword denoting a null value. Because JavaScript is case-sensitive, null is not the same as Null, NULL, or any other variant.
    • undefined. A top-level property whose value is not defined.
    • Number. An integer or floating point number. For example: 42 or 3.14159.
    • String. A sequence of characters that represent a text value. For example:  “Howdy”
    • Symbol (new in ECMAScript 2015). A data type whose instances are unique and immutable.
  • and Object

2.介绍js有哪些内置对象?

3.说几条写JavaScript的基本规范?

A:

  • 总是使用var声明变量
  • 行末别忘了分号
  • 使用标准而不是不标准的功能
  • 使用驼峰命名(如:camelCaseNames)以及大写的常量(如:UPPERCASE),避免使用const关键字,因为IE不支持
  • 使用命名空间技术
  • 避免eval()除非反序列化(奇怪的是JSON解析并未提及)
  • 避免对象上使用with(), 数组使用for in
  • 使用对象以及数组字面量而不是更冗长的声明
  • 要知道truthy和falsy规则
  • JavaScript资源中不使用IE条件注释
  • 不修改内置对象的原型——这会让人颜面扫地,因为这是让JavaScript更加强大的功能之一,但你知道这会导致问题
  • 小心使用闭包以及不要循环引用
  • 同样,小心使用”this”

Reference:翻译:谷歌HTML、CSS和JavaScript风格规范

4.JavaScript原型,原型链 ? 有什么特点?

A:

  • 原型:每个对象都有一个原型对象,它充当继承方法和属性来源的模板对象。
  • 原型链:对象的原型对象也可能有原型,依此类推,便形成原型链。
  • 特点:强大而灵活。
继续阅读

Web 面试题汇总(二)

1.介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?

A:每个元素被表示为一个矩形的方框,框的内容、内边距、边界和外边距像洋葱的膜那样,一层包着一层构建起来。

低版本IE的盒子模型的宽度包括框的内容、内边距和边界。

2.CSS选择符有哪些?哪些属性可以继承?

A:

  • 简单选择器(Simple selectors):通过元素类型、class 或 id 匹配一个或多个元素。
  • 属性选择器(Attribute selectors):通过 属性 / 属性值 匹配一个或多个元素。
  • 伪类(Pseudo-classes):匹配处于确定状态的一个或多个元素,比如被鼠标指针悬停的元素,或当前被选中或未选中的复选框,或元素是DOM树中一父节点的第一个子节点。
  • 伪元素(Pseudo-elements):匹配处于相关的确定位置的一个或多个元素,例如每个段落的第一个字,或者某个元素之前生成的内容。 
  • 组合器(Combinators):这里不仅仅是选择器本身,还有以有效的方式组合两个或更多的选择器用于非常特定的选择的方法。例如,你可以只选择divs的直系子节点的段落,或者直接跟在headings后面的段落。
  • 多重选择器(Multiple selectors):这些也不是单独的选择器;这个思路是将以逗号分隔开的多个选择器放在一个CSS规则下面, 以将一组声明应用于由这些选择器选择的所有元素。

哪些属性可以继承?

  • 所有元素可继承:visibility和cursor。
  • 内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、font-family、font-size、font-style、font-variant、font-weight、text-decoration、text-transform、direction。
  • 终端块状元素可继承:text-indent和text-align。
  • 列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。
  • 表格元素可继承:border-collapse。

3.CSS优先级算法如何计算?

A:CSS根据规则的重要性、专用性和源代码次序来计算优先级。

重要性和源代码次序相对简单,专用性是用四种不同的值(或组件)来衡量的,它们可以被认为是千位,百位,十位和个位:

  1. 千位:如果声明是在style 属性中该列加1分(这样的声明没有选择器,所以它们的专用性总是1000。)否则为0。
  2. 百位:在整个选择器中每包含一个ID选择器就在该列中加1分。
  3. 十位:在整个选择器中每包含一个类选择器、属性选择器、或者伪类就在该列中加1分。
  4. 个位:在整个选择器中每包含一个元素选择器或伪元素就在该列中加1分。
继续阅读