gpt4 book ai didi

ios - 为什么需要使用 NSObject?

转载 作者:可可西里 更新时间:2023-11-01 02:09:05 25 4
gpt4 key购买 nike

我很困惑我是否需要将 NSObject 用于 swift3 。如果是这样,请指导我也是使用 NSNumber

的最佳实践
class App: NSObject {

var id: NSNumber?
var name: String?
var category: String?
var imageName: String?
var price: NSNumber?

var screenshots: [String]?
var desc: String?
var appInformation: AnyObject?

// override func setValue(_ value: Any?, forKey key: String) {
// if key == "description" {
// self.desc = value as? String
// } else {
// super.setValue(value, forKey: key)
// }
// }

}

注意:你能告诉我为什么需要使用 NSObject 吗?有什么好处?

最佳答案

NSObject 类:

此类是大多数 Objective-C 类层次结构的根类,子类从中继承了运行时系统的基本接口(interface)以及作为 Objective-C 对象的能力。 (source) .

AnyObject 协议(protocol):它是对任何对象的隐式确认。

当您需要非类型化对象的灵 active 或当您使用返回非类型化结果的桥接 Objective-C 方法和属性时,您可以使用 AnyObject。 AnyObject 可以用作任何类、类类型或仅类协议(protocol)的实例的具体类型。

AnyObject 也可以用作桥接到 Objective-C 类的类型实例的具体类型。

let s: AnyObject = "This is a bridged string." as NSString
print(s is NSString)
// Prints "true"

let v: AnyObject = 100 as NSNumber
print(type(of: v))
// Prints "__NSCFNumber"

AnyObject 协议(protocol)的灵活行为类似于 Objective-C 的 id 类型。因此,导入的 Objective-C 类型经常使用 AnyObject 作为属性、方法参数和返回值的类型。 (source)

因此您可以使用 NSNumber 变量作为 AnyObject ,稍后可以相应地隐式类型转换。

关于ios - 为什么需要使用 NSObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com