Cocoa类的深入解析:可变性、属性列表与编码解码
1. 可变性与类簇
在Cocoa编程中, NSString 并非值类型,但在可变性方面,它展现出值语义。可变类通常会遵循并在必要时重写其不可变超类的方法。例如, NSMutableArray 有许多方法未在其类文档页面列出,因为这些方法是从 NSArray 继承而来的。 NSArray 的 init(array:) 方法会生成一个不可变数组,而 NSMutableArray 继承自 NSArray 的 init(array:) 方法则会生成一个可变数组。通过这个方法,我们可以在不可变数组和可变数组之间进行转换。此外,还可以使用从 NSObject 继承的 copy (生成不可变副本)和 mutableCopy (生成可变副本)方法,但这些方法返回的是 Any 类型,需要进行类型转换,使用起来不太方便。
这些不可变/可变类对都是以类簇的形式实现的,这意味着Cocoa使用了一个与我们所使用的文档类不同的秘密类。例如,一个 NSString 可能实际上是 NSTaggedPointerString 或 NSCFString 。不过,我们无需关注这个秘密类,因为它只是实现细节,可能会在无通知的情况下发生变化。 </
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



