私のプロジェクトはデバッグ モードで正常にコンパイルおよび実行されますが、リリース x86_64 コンパイルに切り替えると、NSRect を使用して Bounds を設定しようとするとコンパイラ エラーが発生します。(エラーは「setBounds の引数 1 の型に互換性がありません」と表示されます。)
NSGeometry.h の「if NS_BUILD_32_LIKE_64」言語が true になり、必要な typedef が使用されるように、Cocoa (Foundation) インポートの上に NS_BUILD_32_LIKE_64 マクロ定義を追加することを提案している投稿がたくさんあります。そこで、問題のあるクラスの h ファイルにマクロ定義を追加しました。
#define NS_BUILD_32_LIKE_64 1
#import <Cocoa/Cocoa.h>
それでも同じコンパイルエラーが発生します。
また、NSRect から CGRect に明示的に変換しようとしたため、この . . .
// rectIncomingSource is an NSRect
calayer.bounds = rectIncomingSource;
. . . 私はこれを書きました:
calayer.bounds = CGRectMake(rectIncomingSource.origin.x, rectIncomingSource.origin.y, rectIncomingSource.size.width, rectIncomingSource.size.height);
同じエラー。
そして、境界を設定することが唯一の問題になるのはなぜでしょうか? Apple docs によると、NSInteger と NSUInteger が主な変換の問題であり、私はそれらをいたるところで使用していますが、コンパイラはそれらについて文句を言いません。では、なぜ境界で窒息するのでしょうか?
私はおそらくここで本当に単純な何かを見逃しています — ウィザードに謝罪します. 視覚障害者のための何か助けはありますか?