我有一個方法返回一個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