Objective-C从类中删除继承的方法

Dev*_*oss 3 cocoa objective-c

对于子类,有没有办法可以从超类实现中删除/停止方法?

(即.nsstring有一个方法长度.我想阻止"mystring"类获得长度方法).

bbu*_*bum 13

length是NSString类集群中的原始方法; 几乎NSString中的每个其他方法都是使用调用来实现的length.

而不是走这条疯狂的道路,让你的类成为NSObject的子类.没有length方法,它无论如何都不是真正有效的NSString子类.


mip*_*adi 10

您可以覆盖要调用的方法doesNotRecognizeSelector::

- (NSUInteger)length
{
    [self doesNotRecognizeSelector:_cmd];
}
Run Code Online (Sandbox Code Playgroud)

但是如果你必须这样做,你可能想要重新考虑你是否真的想要首先进行子类化.如果您只想"继承"特定的行为/方法,那么使用组合而不是继承可能会更好.