我有一个方法返回一个NSRange。当我从课外调用这个方法时,我得到一个编译错误。一个方法可以返回一个NSRange吗?
NSRange tmpRange;
tmpRange = [phrase rangeInString:searchString forString:theLetter goingForward:YES];
return tmpRange.location == -1;
在h文件:
#import <Foundation/Foundation.h>
@interface Phrase : NSObject {
}
- (NSRange) rangeInString:(NSString *) tgt forString:(NSString *) find goingForward:(BOOL) fwd;
@end
此方法由其它方法乐句对象内调用没有问题。编译器说'赋值中的不兼容类型'。
任何人都可以解释这一点吗?我假设它与返回在对象外生成的NSRange /结构类型值有关,但我不知道它为什么在一个地方而不是另一个地方工作。
注意,通常你应该使用'NSNotFound'作为'location'字段值无效的' NSRange'。 – 2010-04-08 02:15:16
嗯 - 对于各种低质量的原因,我实际上将位置值用作一种错误代码:-1就是这样一种代码。所有的代码都小于零。这与错误无关,因为编译器不知道在运行时会返回什么。但这就是为什么我没有使用NSNotFound ... – 2010-04-08 04:22:46
位置变量被定义为一个NSUInteger,所以它永远不会小于零。你应该使用NSNotFound。 – 2010-04-08 20:56:25