iOS:警告消息““格式指定类型为'int',但参数的类型为'char *(*)(const char *,int)'”“

时间:2018-07-19 15:27:15

标签: objective-c nslog

我在NSLog的第二个%c处收到一条错误消息:

  

有关信息,这是“索引”的类型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的最佳类型是什么?

2 个答案:

答案 0 :(得分:1)

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

您的代码建议您相信index是某个地方的字符变量(例如,声明为char index;)。

错误消息指出index的类型为char *(*)(const char *, int),即:指向函数的指针,该函数采用字符指针和整数值并返回字符指针

现在,恰好有一种完全符合该类型的标准C库函数index()

结论:您将变量名错误键入为index,或在超出其范围的地方键入了变量名,因此获得了C库函数-如果您只是在(Objective-)C中编写函数名您将得到一个完全是您的错误消息所描述的指向函数的指针的值。

答案 1 :(得分:0)

您的char *不是字符,而是指向字符串的指针,您可以尝试将%c更改为%s

如果您使用标准的char,则可以使用%c进行记录。