テスト目的で次のコードを書いているだけです。
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) メソッドを呼び出せないのでしょうか?