Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSString+;从self创建NSMutableString时出现扩展警告_Ios_Objective C_Nsstring_Class Extensions - Fatal编程技术网

Ios NSString+;从self创建NSMutableString时出现扩展警告

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

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

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:)但您的意思是在方法中。对不起,太晚了,我需要睡觉:)