Dan*_*son 2 iphone macos cocoa cocoa-touch objective-c
我有一个返回NSRange的方法.当我从类外部调用此方法时,我收到编译错误.
NSRange tmpRange;
tmpRange = [phrase rangeInString:searchString forString:theLetter goingForward:YES];
return tmpRange.location == -1;
Run Code Online (Sandbox Code Playgroud)
在.h文件中:
#import <Foundation/Foundation.h>
@interface Phrase : NSObject {
}
- (NSRange) rangeInString:(NSString *) tgt forString:(NSString *) find goingForward:(BOOL) fwd;
@end
Run Code Online (Sandbox Code Playgroud)
通过其他方法在Phrase对象中调用此方法没有问题.编译器说"赋值中的不兼容类型".
任何人都可以向我解释这个吗?我假设它与返回在对象外部生成的NSRange/struct类型值有关,但我不知道它为什么在一个地方而不是另一个地方工作.
当然一个方法可以返回NSRange.但是返回结构需要特别注意编译器,因为调用该方法的方式通常是不同的(objc_msgSend_stret
vs. objc_msgSend
).
请确保您声明phrase
为
Phrase* phrase = ...;
Run Code Online (Sandbox Code Playgroud)
所以编译器知道-rangeInString:…
返回NSRange而不是
id phrase = ...;
Run Code Online (Sandbox Code Playgroud)
(另外,由于您没有显示编译器错误的哪一行,请确保使用的函数return … == -1;
返回BOOL而不是NSRange.)
归档时间: |
|
查看次数: |
1524 次 |
最近记录: |