栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在目标C中不可见的快速初始化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在目标C中不可见的快速初始化

您看到的问题是,Swift无法桥接可选值类型-这

Int
是一种值类型,因此
Int!
无法桥接。可选引用类型(即任何类)都可以正确桥接,因为它们始终可以
nil
在Objective-
C中使用。您的两个选择是使参数成为非可选参数,在这种情况下,它将作为
int
或桥接到ObjC
NSInteger


// Swiftpublic init(userId: Int) {    self.init(style: UITableViewStyle.Plain)    self.userId = userId}// ObjCMyClass *instance = [[MyClass alloc] initWithUserId: 10];

或使用可选

NSNumber?
,因为可以将其桥接为可选值:

// Swiftpublic init(userId: NSNumber?) {    self.init(style: UITableViewStyle.Plain)    self.userId = userId?.integerValue}// ObjCMyClass *instance = [[MyClass alloc] initWithUserId: @10];    // note the @-literal

但是请注意,您实际上并没有像对待可选参数那样对待参数-除非

self.userId
也是可选参数,否则您将自己设置为可能会导致运行时崩溃。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号