从self创建NSMutableString时出现NSString + Extension警告

时间:2013-03-04 12:55:54

标签: ios objective-c nsstring class-extensions

在我创建的iphone应用程序中,扩展类为NSString。

NSString+Extensions.m上课

在其中一个方法中,我需要将字符串转换为NSMutableString。

我试着用这个:

NSMutableString * stringToManipulate = [NSMutableString stringWithString:self];

但它正在发出警告:

Incompatible pointer types sending 'const Class' to parameter of type 'NSString *'

对于我的知识,self是对我调用方法的字符串的引用,对吧?那么为什么它不应该是NSString *类型?知道我可以在自己身上使用通常的NSString方法。

关于这个问题的任何想法?

由于

2 个答案:

答案 0 :(得分:1)

检查方法是声明为类方法(使用+符号)还是实例方法(使用 - 符号)。如果是第一种情况,编译器警告是正常的。将方法转换为实例1然后

答案 1 :(得分:1)

在Objective-C中,当您在类方法中调用self时,它会引用类对象。对于NSString类方法,调用self与调用[NSString类]相同。

所以,你的行与:

相同

NSMutableString * stringToManipulate = [NSMutableString stringWithString:[self class]];

如果您将方法从第一类(+符号)更改为一个对象( - 符号),它将起作用,但您必须以不同方式调用它(来自NSString对象)。

如果您想进一步解释,可以发布整个方法声明吗? 您还可以查看NSObject协议参考,了解有关+ class方法的更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

希望这会有所帮助,