Swift语言有各种各样缺乏(或没有)文档记录的特性(attribute)放在那里等着被使用。让我们一起看看其中的一些特性:
创新互联是一家集网站建设,临沧企业网站建设,临沧品牌网站建设,网站定制,临沧网站建设报价,网络营销,网络优化,临沧网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
@inline
这个特性为编译器提供了内联提示。有效的取值是__always和never。除非我认为必须要用这两个值,否则就不会使用它(特别是__always)。到目前为止与其相关的规则还不是很明确,在有限的测试下,它可以正常地工作,但还要视具体情况而定。
进 一步的解释:尽管底层虚拟机(Low Level Virtual Machine, LLVM)有强制内联的概念,但我们目前还不知道这个@inline特性是否与其直接映射,也不知道是否存在大小方面的限制,但这将会导致编译器忽略这一 点而跳过内联。理论上说应该是这样的,但我不保证一定是。
注意(当优化设置关闭时)在调试模式下的构建将忽略@inline。
@transparent
我最初并未将这个特性列出来。该特性会导致编译器在管道(pipeline)中更早地将函数内联。它用于“像+(Int, Int)这样非常原始的函数”,而“不应该用于独立函数”。
甚至在没有优化设置的调试模式下@transparent特性函数就会被内联,所以在调用“1+1”这样的函数的时候并不会特别慢。另外这个特性与@inline(__always)非常类似。
@availability
这个特性可以用来标识某些函数只在某些平台或版本上可用。***个参数是平台,可以用星号(*)代表一切可用,还可以是iOS或OS X。因为如果需要针对不同的平台,就要指定多个@availability属性。
如 果需要表示该函数在某个给定的平台完全不可用时,可以将第二个参数置为unavailable。此外,还可以用 introduced,deprecated和obsoleted来指定一个或是多个版本的组合:obsoleted意味着该项已经删 除,deprecated仅仅表示如果使用就会给予警告。***你可以设置message的值,如果该项被使用了就由编译器输出。下面是一些例子:
- @availability(*, unavailable)
- func foo() {}
- @availability(iOS, unavailable, message="you can't call this")
- func foo2() {}
- @availability(OSX, introduced=10.4, deprecated=10.6, obsoleted=10.10)
- @availability(iOS, introduced=5.0, deprecated=7.0)
- func foo3() {}
@noreturn
正如该特性所描述的那样:编译器可以假定这个函数是一个永远循环运行的起点,例如while true { },或者假定是函数abort或者exit进程的情况。
评论者Marco Masser指出,如果调用另一个被标志为@noreturn的函数,那么编译器会忽略掉当前函数中缺失的返回值(missing return values),因为编译器理解程序的控制流。
@asmname
该属性给出了函数、方法或属性实现的符号名称。如果你已经知道对应的函数参数及其类型,那么就可以直接调用Swift的内部标准库函数,甚至不用头文件,也可以方便地调用C语言编写的函数:
- @asmname("function") func f()
@unsafe_no_objc_tagged_pointer
上面这个仍然是个谜,但我猜测它是在告诉Swift与Objective-C联系的时候不要使用tagged pointer。
@semantics
这又是另一个谜。参数看起来像是array.mutate_unknown或array.init这样的字符串数组。想必这是要告诉编译器(或静态分析器)函数是如何工作的。
结论
谁还需要乏味老套的@objc和@autoclosure呢?还是算了吧!
文章来源:Russ Bishop
作者简介:Russ Bishop 全能型程序员,使用C#、Objective-C和Swift语言编程,开发了奇特的应用Storm Sim Free,博客:http://www.russbishop.net/。
译者简介:白云鹏,移动应用开发者,个人博客:http://baiyunpeng.com。
当前文章:Swift语言那些鲜为人知的特性
分享URL:http://www.shufengxianlan.com/qtweb/news1/91101.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联