gpt4 book ai didi

objective-c - 使用指向指针的指针和 NSError 获取警告

转载 作者:行者123 更新时间:2023-12-02 09:37:12 25 4
gpt4 key购买 nike

我不明白以下警告:

不兼容的指针类型将“NSError *__strong *”发送到“NSString *__autoreleasing *”类型的参数

抛出这个问题的方法是

BSSPhoneNumberFormatter *formatter = [[BSSPhoneNumberFormatter alloc] init];
NSString *tmp = self.dtlPhnNbr.text;
id objectValue;
NSError *error;
[formatter getObjectValue:&objectValue forString:tmp errorDescription:&error];

最后一行有警告。

BSSPhoneNumberFormatter 的 h 文件是

#import <Foundation/Foundation.h>

@interface BSSPhoneNumberFormatter : NSFormatter

@end

方法是

- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error {
*anObject = (id)[self stripNonDigits:string];
return YES;
}

我知道 (NSString **) 错误是指向指针的指针。另一篇文章说在被调用的方法和调用方法中都用 (NSString *) 替换 (NSString **) ,但如果我这样做,我会遇到硬错误。

这是怎么回事?

最佳答案

方法中的最后一个参数:

- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error

errorDescription:(NSString **)error

这是指向 NSString 的指针,但您传递的是 NSError 。将调用更改为:

NSString *error; <-- Change object type to NSString here
[formatter getObjectValue:&objectValue forString:tmp errorDescription:&error];

您还可以替换方法以接受 NSError** 作为参数而不是 NSString**。这取决于什么最适合您的项目要求。

关于objective-c - 使用指向指针的指针和 NSError 获取警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390757/

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