gpt4 book ai didi

iphone - 方法可以返回 NSRange 吗?

转载 作者:行者123 更新时间:2023-12-03 16:24:07 26 4
gpt4 key购买 nike

我有一个返回 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

此方法在 Phrase 对象内由其他方法调用没有问题。编译器说“赋值中的类型不兼容”。

谁能给我解释一下吗?我认为它与返回在对象外部生成的 NSRange/struct 类型值有关,但我不知道为什么它在一个地方工作而不在另一个地方工作。

最佳答案

当然,方法可以返回 NSRange。但返回结构需要编译器特别注意,因为调用方法的方式通常不同(objc_msgSend_stretobjc_msgSend)。

请确保将短语声明为

Phrase* phrase = ...;

以便编译器知道 -rangeInString:... 返回的是 NSRange,而不是

id phrase = ...;

(另外,由于您没有显示编译器错误的行,请确保使用 return … == -1; 的函数返回 BOOL 而不是 NSRange。)

关于iphone - 方法可以返回 NSRange 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com