swift - 在 Swift 中检查值或引用类型

标签 swift value-type reference-type

我们如何检查传入函数的参数是值还是引用类型?例如

func isReferenceType(toTest: Any) {
    return true // or false
}

如我们所见here ,我们无法利用泛型来做到这一点。

最佳答案

AnyObject 是任何类类型自动遵守的协议(protocol),所以你可以这样写:

func isReferenceType(toTest: Any) -> Bool {
    return toTest.dynamicType is AnyObject
}

class Foo { }
struct Bar { }

isReferenceType(Foo())    // true
isReferenceType(Bar())    // false
isReferenceType("foo")    // false
isReferenceType(123)      // false
isReferenceType([1,2,3])  // false

关于swift - 在 Swift 中检查值或引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725431/

相关文章:

c# - 查找一个字节数组是否包含另一个字节数组的最快方法是什么?

ios - 如何在 IOS 中使用 Swift 在 Facebook 上分享图片

arrays - 如果数组是值类型并因此被复制,那么它们为什么不是线程安全的呢?

c# - 在调试器中唯一标识引用类型

ios - 需要澄清值类型方法

c# - 在什么情况下您会使用 new 关键字初始化值类型?

swift - 为什么指向new Object后内存地址是一样的?

iOS:无效更新:第 0 节中的行数无效

ios - UISearchBar 范围空白

ios - 在运行时指定 Realm 对象类型