#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey")
UIKeyboardFrameEndUserInfoKey != NULL
和&UIKeyboardFrameEndUserInfoKey != NULL
之间有什么区别吗?
我试过:if(&UIKeyboardFrameEndUserInfoKey != NULL) {...}
并收到警告
'UIKeyboardFrameEndUserInfoKey'的地址比较不等于 空指针始终为真
答案 0 :(得分:8)
将常量(或函数)的地址与null进行比较通常用于确定是否定义了常量。
您收到警告,因为您正在构建的SDK(最小目标版本)具有定义的常量,因此它将始终评估为true(地址不为null)。但是,当在没有定义常量的iOS版本上运行时,它将不为真(地址将为null)。
如果您将目标版本降低到低于定义常量的版本,它将弱链接到该SDK,您将不再收到警告。