Objective-C int作为Int32桥接到Swift

理查德·托普奇(Richard Topchii)

如果我是正确的话,Objective-C的int类型长度取决于平台字的长度(即,在64位环境中运行时为64位,在32位环境中运行时为32位)。

但是,在将Objective-C接口桥接到Swift时,此类型被桥接,因为Int32它明确定义了32位的大小。

这是一个错误,还是int在Objective-C中始终占据32位?如果不是错误,为什么将其桥接为Int32

Objective-C介面范例

-(int)numberOfItems;

桥接到:

func numberOfItems -> Int32

当我将方法签名更改为use时NSInteger,它将正确桥接:

-(NSInteger)numberOfItems;
func numberOfItems -> Int

如果我将intObjective-C更改NSInteger,或者这些类型在Objective-C中的行为完全相同,是否会存在危险

用户名

目标C的大小int(或正确C的是int)应至少为16位,因此以32位存储它不是无效的。可能在Apple的实现中始终为32位int

如果我是正确的话,Objective-C的int类型长度取决于平台字长(即,在64位环境中运行时为64位,而在32位环境中运行时为32位)。

NSInteger不是int你可能因为被混淆他们SwiftInt是同等类型Objective CNSInteger

您甚至可以在文档中看到它:

typealias NSInteger = Int

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章