关于 NSLog
和 printf
的快速问题:
我在 Xcode 中运行以下代码:
char array[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
char *arrayPtr = array;
NSLog(@"TEST: %c", *(arrayPtr+9));
printf(@"TEST: %c", *(arrayPtr+9));
除此之外,每一行都可以正常工作:
printf(@"TEST: %c", *(arrayPtr+9));
错误:
Implicit conversion of an Objective-C pointer to 'const char *' is disallowed with ARC.
你能给我解释一下这里发生了什么吗?如果在这里进行简单的强制转换就可以正常工作?
NSLog
工作正常,没有任何错误。但是 printf
可以。我试过使用 __bridge
cast,但它似乎并不令人满意。
有没有办法在不关闭 ARC 的情况下进行这项工作?
最佳答案
该错误与char
数组或算术无关。它告诉您,当您需要传递常规 C 字符串时,您正在将 NSString
作为格式字符串传递给 printf()
:
printf("TEST: %c", *(arrayPtr+9));
// ^ No @
关于objective-c - C/Objective-C printf 和 NSLog(指向 char 数组的指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21070111/