#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey")这段代码我知道是什么意思,但是不明白为什么判断是不是NULL的时候要对变量先取址?我自己写代码测试时会有警告,说拿地址跟非NULL比较永远都是true
#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey")
学习是最好的投资!
さて、ぐっすり眠って目が覚めたら、同じ質問をした人が既に Baozhen で私に回答していたので、ここに投稿します...Baozhen で私が尋ねたのは、なぜ彼がNULL と比較するためにアドレスを変更したのに、なぜ NULL と比較するために定数アドレスを使用する必要があるのでしょうか。その UIKey.... は確かに定数であるため さて、これが私の問題を解決したと思う返信です。「定数 (または関数) のアドレスと null の比較は、通常、定数が定義されているかどうかを判断するために使用されます。
ビルド対象の SDK (最小ターゲット バージョン) に定数が定義されているため、警告が表示されます。そのため、実行すると常に true と評価されます (アドレスは null になりません)。定数が定義されていない iOS のバージョンでは、true になりません (アドレスは null になります)。
ターゲット バージョンを、定数が定義されているバージョンよりも低いバージョンに下げると、その SDK とのリンクが弱くなり、警告は表示されなくなります。」
さて、ぐっすり眠って目が覚めたら、同じ質問をした人が既に Baozhen で私に回答していたので、ここに投稿します...Baozhen で私が尋ねたのは、なぜ彼がNULL と比較するためにアドレスを変更したのに、なぜ NULL と比較するために定数アドレスを使用する必要があるのでしょうか。その UIKey.... は確かに定数であるため
さて、これが私の問題を解決したと思う返信です。「定数 (または関数) のアドレスと null の比較は、通常、定数が定義されているかどうかを判断するために使用されます。
ビルド対象の SDK (最小ターゲット バージョン) に定数が定義されているため、警告が表示されます。そのため、実行すると常に true と評価されます (アドレスは null になりません)。定数が定義されていない iOS のバージョンでは、true になりません (アドレスは null になります)。
ターゲット バージョンを、定数が定義されているバージョンよりも低いバージョンに下げると、その SDK とのリンクが弱くなり、警告は表示されなくなります。」