我有一个返回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 / struct类型值有关,但我不知道为什么它在一个地方而不是另一个地方起作用。
最佳答案
当然,方法可以返回NSRange。但是返回的结构需要特别注意编译器,因为调用方法的方式通常是不同的(objc_msgSend_stret
与objc_msgSend
)。
请确保将phrase
声明为
Phrase* phrase = ...;
以便编译器知道
-rangeInString:…
返回NSRange,而不是id phrase = ...;
(此外,由于不显示编译器错误,所以请确保使用
return … == -1;
的函数返回的是BOOL而不是NSRange。)关于iphone - 方法可以返回NSRange吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2595868/