如何注释用于Swift中的Objective-C API(例如返回类型)

如何注释用于Swift中的Objective-C API(例如返回类型),第1张

概述根据Xcode发行说明,苹果已经“审核”了他们现有的API,以去除隐式解包的可选项.这意味着,而不是T!他们的API将返回T或T?在适当情况下. 他们在哪里做这个?如何注释/包装我现有的Objective-C代码(特别是库),使其更易于使用Swift? Xcode 6.3 / Swift 1.2 Xcode 6.3增加了在Objective-C中注释可空性的官方支持. 可空 可以通过使用关键字__ 根据Xcode发行说明,苹果已经“审核”了他们现有的API,以去除隐式解包的可选项.这意味着,而不是T!他们的API将返回T或T?在适当情况下.

他们在哪里做这个?如何注释/包装我现有的Objective-C代码(特别是库),使其更易于使用Swift?

Xcode 6.3 / Swift 1.2

Xcode 6.3增加了在Objective-C中注释可空性的官方支持.

可空

可以通过使用关键字__nullable,__nonnull和__null_unspecifIEd(默认值)注释类型来声明值的可空性.在属性和方法中,这些关键字是可空的,非空的和null_unspecifIEd的.

Xcode发行说明中的​​示例

- (voID)registerNib:(nonnull UINib *)nibforCellReuseIDentifIEr:(nonnull Nsstring *)IDentifIEr;- (nullable UI@R_502_5991@VIEwCell *)cellForRowAtIndexPath:(nonnull NSIndexPath)indexPath;@property (nonatomic,reaDWrite,retain,nullable) UIVIEw *backgroundVIEw;

更改默认值

null_unspecifIEd(其转换为T!)是所有现有代码的默认值.一个有用的功能是更改API部分的默认值.

NS_ASSUME_NONNulL_BEGIN// nonnull is the default hereNS_ASSUME_NONNulL_END

这消除了很多噪音,因为接受和处理nil的方法通常是异常,而不是规则.就个人而言,我会将此用于所有经过审核的API.

null_reset@R_502_5991@

null_reset@R_502_5991@是一个额外的注释,用于不常见的情况,您可以将属性设置为nil,但不会为零(因为它将重置为默认值).

@property (nonatomic,null_reset@R_502_5991@) UIcolor *tintcolor;

就个人而言,我会避免这个新代码的行为.这种性质的混合性质并不适合Swift.

Xcode 7 / Swift 2(Beta)

Xcode 7增加了在Objective-C中注释通用类型的支持.

集合的通用类型注释

NSArray,NSSet和NSDictionary(自动桥接到Swift的数组,集合和字典)可以使用其内容的类型进行注释.

@property NSArray<Nsstring *> *stringArray;@property NSSet<Nsstring *> *stringSet;@property NSDictionary<Nsstring *,Nsstring *> *stringDict;

还有一个__kindof关键字告诉Objective-C编译器不那么严格,并允许下载.但它并不影响Swift方面.

自定义类的通用类型注释

@interface MyArray1<__covariant T> : NSObject- (voID)addobject:(T)object;@end@interface MyArray2<__covariant T : NSObject *> : NSObject- (voID)addobject:(T)object;@end@interface MyArray3<__covariant T : ID<NScopying>> : NSObject- (voID)addobject:(T)object;@end

@implementation不知道T,并使用ID / NSObject * / ID< NScopying>像往常一样.

总结

以上是内存溢出为你收集整理的如何注释用于Swift中的Objective-C API(例如返回类型)全部内容,希望文章能够帮你解决如何注释用于Swift中的Objective-C API(例如返回类型)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存