这个错误消息抱怨什么?以及如何解决它?

时间:2010-02-10 14:45:35

标签: objective-c cocoa

尝试应用补丁并编译收到的警告消息:

<some_file>: In function '-[XXXXX saveAndCreate:]':
<some_file>:262: warning: 'NSString' may not respond to '-stringByReplacingOccurrencesOfString:withString:'
<some_file>:262: warning: (Messages without a matching method signature
<some_file>:262: warning: will be assumed to return 'id' and accept
<some_file>:262: warning: '...' as arguments.)
distcc[6493] ERROR: compile (null) on localhost failed

抱怨这段代码,

[clientHost findAvailableIn:
    [clientHost defaultVMPath]
    baseName:
        [displayName stringByAppendingPathExtension:PL_BUNDLE_EXTENSION]
    nameFormat:[[displayName
                     stringByReplacingOccurrencesOfString:@"%"
                                               withString:@"%%"]
                     stringByAppendingString:@" %u.xxxx"]
    startIndex:2
    contextInfo:contextInfo];

这是编译命令的一部分:

lin32/gcc-5363-1/bin/i686-apple-darwin8-gcc -mmacosx-version-min=10.4 -arch i386 -march=pentium-m -mtune=prescott -Werror -Wall -Wno-trigraphs -Wreturn-type -Wunused-variable -pipe -O2 -g3 -gfull -Wno-pointer-sign -x objective-c -fobjc-exceptions -fpascal-strings -fmessage-length=0 

用Google搜索警告并尝试使用方法here,但仍然收到警告信息。

我在Mac开发中一无所知,如果这是显而易见的事情,请不要理我(我不知道上面提供的信息是否过时,请告诉我还需要提供什么)。感谢名单。

修改: 1)扩展代码块。 2)更正警告信息。

2 个答案:

答案 0 :(得分:2)

警告引用的是与您引用的不同的行。您使用的消息称为stringByReplacingOccurrencesOfString:withString:NSString就可以了。然而,方法replaceOccurrencesOfString:withString试图改变接收器。 NSString是不可变的,因此无法更改。如果要使用该方法,请将其发送到NSMutableString对象。

答案 1 :(得分:1)

您要导入<Foundation/Foundation.h>吗?非常令人惊讶的是,您会收到此警告,但-stringByAppendingPathExtension没有警告。这真的是你收到的唯一警告吗?

我建议分解代码来创建一些临时变量。你正在进行如此多的嵌套方法调用,这使得很难确定你的错误在哪里。编译器将优化大多数临时变量,因此在使代码更清晰时没有理由避免它们。