我只是出于测试目的编写以下代码:
NSString *aStr = [[NSString alloc] initWithFormat:@"Foo"];
aStr = [aStr initWithFormat:@"Bar"];//Crashed here
我收到以下错误:
*** initialization method -initWithFormat:locale:arguments: cannot be sent to an abstract object of class __NSCFString: Create a concrete instance!
如果我写下面的代码同样的事情发生
NSString *aStr = [NSString alloc];
aStr = [aStr initWithFormat:@"Foo"];
aStr = [aStr initWithFormat:@"Bar"]; //Crashed here
通过谷歌我知道这initWithFormat
将返回NSCFString
对象。我的问题是,如果NSCFString
是派生类,NSString
那么为什么我不能initWithFormat
在NSCFString
. 如果可以停止可见性,我如何在代码中实现而不覆盖NSCFString
(派生类)中的方法。
简而言之,如果 NSCFString 是 NSString 的派生类,那么为什么我不能在其上调用基类 (initWithFormat) 方法?