【发布时间】:2010-11-22 17:06:59
【问题描述】:
是否可以缩小子类中允许的 ivar 类型。像这样的:
@interface person: NSObject {
NSArray *friendArray;
}
@interface mutablePerson: person {
NSMutableArray *friendArray;
}
我刚刚尝试了那个确切的代码,Xcode 给了我一个编译错误。我想知道是否有办法解决它。
我正在从事的项目会遇到很多这种情况。我知道我可以使用强制转换来使代码正常工作。但是如果我这样做的话,我会做很多演员,我想知道是否有更好的方法。
【问题讨论】:
-
1) 收窄是不允许的,但你已经加宽了,就是这样。 2)您再次声明相同的成员名称 - 您不能这样做。给它一个新名称并更改访问器。
-
你尝试过/实现过 NSMutableCopying 协议吗?可能就是你想要的。
-
@Alex Brown。它已经变窄了。
NSMutableArray是NSArray的子类。 -
加宽了。 NSMutableArray 至少和 NSArray 一样强大。有人抓住一个 NSMutableArray 并认为它是一个 NSArray 不会有任何奇怪的影响,因此你的类的 API 和它的新子类没有改变。
标签: iphone ios subclassing