Ios NSString+;从self创建NSMutableString时出现扩展警告
在iphone应用程序中,我创建了NSString的扩展类Ios NSString+;从self创建NSMutableString时出现扩展警告,ios,objective-c,nsstring,class-extensions,Ios,Objective C,Nsstring,Class Extensions,在iphone应用程序中,我创建了NSString的扩展类 NSString+Extensions.mclass 在其中一个方法中,我需要将字符串转换为NSMutableString 我试着用这个: NSMutableString * stringToManipulate = [NSMutableString stringWithString:self]; 但它给出了一个警告: Incompatible pointer types sending 'const Class' to parame
NSString+Extensions.m
class
在其中一个方法中,我需要将字符串转换为NSMutableString
我试着用这个:
NSMutableString * stringToManipulate = [NSMutableString stringWithString:self];
但它给出了一个警告:
Incompatible pointer types sending 'const Class' to parameter of type 'NSString *'
据我所知,是对我调用方法的字符串的引用,对吗?那么为什么它不应该是NSString*类型呢?知道我可以在self上使用常用的NSString方法
对这个问题有什么想法吗
谢谢检查该方法是声明为类方法(带+符号)还是实例方法(带-符号)。如果是第一种情况,编译器警告是正常的。将方法转换为实例,然后在Objective-C中,当您在类方法中调用
self
时,它引用类对象。对于NSString
class方法,调用self
与调用[NSString class]相同
因此,您的线路与以下线路相同:
NSMutableString*stringToManipulate=[NSMutableString stringWithString:[self class]]代码>
如果您将方法从类一(+symbol)更改为对象一(-symbol),它将工作,但您必须以不同的方式调用它(从NSString
对象)
如果需要进一步解释,可以发布整个方法声明吗?
您还可以查看NSObject协议参考,了解有关+类方法的更多信息:
希望这会有所帮助,是,它是使用+符号声明的。无论如何,我可以让它工作,而不改变它-?谢谢你。类方法中的Self是对该类的引用,因此没有提供实例值。如果你想处理一个实际的值,你只需要实例化这个字符串,然后在其中调用一个jnstance方法。是的,就是这样,谢谢。我原以为我必须更改NSString+扩展名中的+。m name:)但您的意思是在方法中。对不起,太晚了,我需要睡觉:)