错误"创建具体实例!"

dod*_*onl 7 cocoa objective-c-2.0

我在同一个代码中遇到了另一个问题......我收到了这个错误:

初始化方法-initWithCharactersNoCopy:length:freeWhenDone:无法发送到类NSString_RegEx的抽象对象:创建一个具体的实例!

但我不明白错误或我应该做什么......

编辑:

NSString *pageContent = [[NSString alloc] initWithData:pageContents encoding:NSASCIIStringEncoding];
NSString_RegEx *pContent = [[NSString_RegEx alloc] initWithString: pageContent];
Run Code Online (Sandbox Code Playgroud)

Boa*_*ler 13

你看到这个是因为NSString是一个类集群.请参阅苹果的文档在这里的一般解释,这里的笔记特别是关于继承的NSString.基本上,NSString是一个抽象类,没有存储字符的方法,各种-initWith ...方法都基于初始化方法返回NSString的不同具体子类.通常,当您使用NSString时,这是完全透明的.但是,如果你想要子类NSString,你必须至少实现基本方法(-length,和-characterAtIndex :)加上你想要的任何init方法(显然,有一种方法可以存储字符串的字符) ).

如果您只想为NSString添加功能,通常不需要子类化.首先,您应该检查在NSString上运行的类别或函数,或者包含NSString的类上的方法是否会更好.例如,请参阅RegexKit或Google Toolbox For Mac,两者都使用NSString上的类别实现正则表达式支持.