ios - 格式指定类型 'int' 但参数的类型为 'NSString *'

标签 ios objective-c generics macros nslog

任何人:

我想用一个宏来打印log, following,

#define isaObject(parameter) _Generic((parameter), id: YES, id __strong: YES, default: NO)
#define kNSLog(parameter) do                   \
    {                                          \
        BOOL is = isaObject((parameter));      \
        if (is)                                \
        {                                      \
            NSLog(@"----Yes : %@", parameter); \
        }                                      \
        else                                   \
        {                                      \
            NSLog(@"----No : %d", parameter);  \
        }                                      \
    } while (NO)


int i = 99;
NSString * s = @"abcd";

kNSLog(i);
kNSLog(s);

然后,编译器发出警告“格式指定类型‘int’,但参数的类型为‘NSString *’”。

请问如何修改?

最佳答案

您可以将参数显式转换为 int 以避免该警告:

NSLog(@"----No : %d", (int)parameter);\

关于ios - 格式指定类型 'int' 但参数的类型为 'NSString *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470241/

相关文章:

ios - crashlytics 中应用程序的不同包标识符

ios - 确保在ARC中重新分配

java - 结合 Java 泛型和反射以避免强制转换

java - java中的对象扩展

iphone - 如何在 iOS 的 UIDatePicker 中阻止日期

ios - 如何在完整 map 的mapbox ios sdk中拍摄快照

ios - 在像 Instagram 这样的表格 View 中使用多个 AVPlayer

html - 服务器上的身份验证错误

ios - 设置段颜色的tintColor时如何停止导航栏TintColor的变化?

java - 为什么 Java 不允许类中的隐式泛型?