iOS:警告消息 "Format specifies type 'int' but the argument has type 'char *(*)(const char *, int)'"

iOS: Warning message "Format specifies type 'int' but the argument has type 'char *(*)(const char *, int)'"

我在 2 日 NSLog 收到 %c 的错误消息:

for info, here is the type of 'index' char => *index(const char *, int) __POSIX_C_DEPRECATED(200112L);

我不明白我必须在这里放什么类型:

@try {
     [[cellToFill valueForKey:@"_textField"] setAutocapitalizationType: [[color valueForKey:@"textField.autocapitalizationType"] integerValue]];
}
@catch (NSException *exception) {
    NSLog(@"%@", exception.reason);
}
@finally {
    NSLog(@"Char at index %c cannot be found", index); 
}

在 NSLog 中放入什么类型可以避免该警告?

你的char *不是一个字符而是一个指向字符串的指针,你可以试试把%c改成%s

如果您使用标准 char,您可以使用 %c 记录它。

您可能在 NSLog() 调用中输入了错误的标识符 index

你的代码表明你认为 index 是某处的字符变量(例如声明为 char index;)。

错误消息指出 indexchar *(*)(const char *, int) 类型,即: 一个指向接受字符指针和整数值的函数的指针,以及 returns一个字符指针.

现在正好有一个标准的 C 库函数 index() 正是这种类型。

结论:你把你的变量名打错了 index,或者把它打错了,因此得到的是 C 库函数——如果你只是在 (Objective-)C 你得到一个指向函数的值,正如你的错误信息所描述的那样。