Pet*_*rbo 8 cocoa objective-c return-type nsmutablearray nsarray
如果我想返回一个像这样的不可变数组+ (NSArray *)ids
但是在这个方法中我声明了一个NSMutableArray
因为我想用它来排序它-sortUsingSelector:
.
返回此方法非常有效.
但编写声明返回方法应该是一种类型而实际类型是另一种类型的代码是否"没问题"?
这是否有效,因为它NSMutableArray
是一个子类NSArray
?
实际的回报值是一个NSArray
还是一个NSMutableArray
?
小智 6
(...)编写声明返回方法应该是一种类型而实际类型是另一种类型的代码是"没关系"吗?
是的,提供的类型是兼容的; 看下一段.事实上,在Cocoa(特别是类集群)中也存在一些这样的情况.
这是否有效,因为NSMutableArray是NSArray的子类?
究竟.由于NSMutableArray
是它的子类NSArray
,它继承了它的所有方法和声明的属性,所以它的公开行为就像NSArray
.这被称为Liskov替代原则.
实际的返回值是NSArray还是NSMutableArray?
返回值是您返回的任何值.既然你回来了NSMutableArray
,那就是了NSMutableArray
.从调用者的角度来看,它是一个可以像一个对象一样使用的对象NSArray
.