Swift语言有各类各样缺少(或没有)文档记录的特性(attribute)放在那里等着被使用面试
iOS开发交流技术群:563513413,无论你是大牛仍是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!数组
这个特性为编译器提供了内联提示。有效的取值是__always和never。除非我认为必需要用这两个值,不然就不会使用它(特别是__always)。到目前为止与其相关的规则还不是很明确,在有限的测试下,它能够正常地工做,但还要视具体状况而定。函数
进一步的解释:尽管底层虚拟机(Low Level Virtual Machine, LLVM)有强制内联的概念,但咱们目前还不知道这个inline特性是否与其直接映射,也不知道是否存在大小方面的限制,但这将会致使编译器忽略这一点而跳过内联。理论上说应该是这样的,但我不保证必定是。学习
注意:当优化设置关闭时在调试模式下的构建将忽略inline。测试
我最初并未将这个特性列出来。该特性会致使编译器在管道(pipeline)中更早地将函数内联。它用于[“像+(Int, Int)这样很是原始的函数”,而“不该该用于独立函数”]优化
甚至在没有优化设置的调试模式下transparent特性函数就会被内联,因此在调用“1+1”这样的函数的时候并不会特别慢。另外这个特性与inline(__always)很是相似。spa
这个特性能够用来标识某些函数只在某些平台或版本上可用。第一个参数是平台,能够用星号(*)表明一切可用,还能够是iOS或OS X。由于若是须要针对不一样的平台,就要指定多个availability属性。调试
若是须要表示该函数在某个给定的平台彻底不可用时,能够将第二个参数置为unavailable。此外,还能够用introduced,deprecated和obsoleted来指定一个或是多个版本的组合:obsoleted意味着该项已经删除,deprecated仅仅表示若是使用就会给予警告。最后你能够设置message的值,若是该项被使用了就由编译器输出。code
正如该特性所描述的那样:编译器能够假定这个函数是一个永远循环运行的起点,例如while true { },或者假定是函数abort或者exit进程的状况。进程
评论者Marco Masser指出,若是调用另外一个被标志为noreturn的函数,那么编译器会忽略掉当前函数中缺失的返回值(missing return values),由于编译器理解程序的控制流。
该属性给出了函数、方法或属性实现的符号名称。若是你已经知道对应的函数参数及其类型,那么就能够直接调用Swift的内部标准库函数,甚至不用头文件,也能够方便地调用C语言编写的函数:
Java代码
asmname("function") func f()
上面这个仍然是个谜,但我猜想它是在告诉Swift与Objective-C联系的时候不要使用tagged pointer。
参数看起来像是array.mutate_unknown或array.init这样的字符串数组。想必这是要告诉编译器(或静态分析器)函数是如何工做的。