概要
WWDC 2015 推出和开源 Swift 2.0,Swift作为全新的开发语言,有很多新特性。而Swift可以与混编,所以Objective-C也增加了一些新特性与Swift同步 (ransparently interoperates)。虽然将来有一天Objective-C可能会被Swift取代,但就目前来说,Objective-C还是主流,原因是Swift还处于成长期。下面将介绍三个主要的新特性:
Nullability
Lightweight Generics
__kindof
Nullability
(官网:In previous Xcode releases, some Apple frameworks had been specially audited so that their API would show up with proper Swift optionals. Xcode 6.3 supports this for your own code with a new Objective-C language feature: nullability annotations)
Nullability特性不是Xcode7才有的,从Xcode6.3的发布,新版的Clang引入了一些关键字:
__nullable / nullable:标示指针可以为nil或NULL
__nonnull / nonnull:标示指针不应该为nil,如果传一个nil值给指针,会收到编译器警告
__null_unspecified / null_unspecified:未标示指针是否为nil(使用场景较少)
null_resettable:专门用来修饰属性的,标示该属性即使不赋值,也会有一个系统的默认值,不会为nil
其中__nullable与nullable有无下划线和__strong与strong、__weak与weak有无下划线道理相似(修饰属性用strong,修饰变量用__strong),但使用时摆放位置没有const关键字那么严谨:
(顺便回忆一下const:
int const aVar =10;