0

私のプロジェクトはコンパイルしてOKをデバッグモードで実行しますが、x86_64コンパイルをリリースすると、NSRectを使用してsetBoundsを試行するとコンパイラエラーが発生します。 (エラーは「setBoundsの引数1に互換性のない型」を読み込みました。)NS_BUILD_32_LIKE_64マクロでもsetBoundを設定できません

NS_BUILD_32_LIKE_64マクロ定義をCocoa(Foundation)インポートの上に追加することを提案している記事がたくさんありますので、「if NS_BUILD_32_LIKE_64 "NSGeometry.hの言語は真であり、必要なtypedefが使用されます。マクロの定義を問題のクラスの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のドキュメントによれば、NSIntegerとNSUIntegerは変換の主な問題であり、私はそれらを全面的に使用しますが、コンパイラはそれらについて文句を言いません。だから、どうして境界線が詰まるのだろう?

私は恐らくここで本当に簡単な何かが欠けているでしょう - そのために私はウィザードに謝ります。盲人のための助け?

答えて

1

ターゲット情報ウィンドウには、これを理解するために私に手掛かりを与えた:

私はNS_BUILD_32_LIKE_64が特定のクラスのHファイルで定義入れていました。プレフィックスヘッダーファイルには、通常はプロジェクトの「その他のソース」にあるpch拡張子が付いているはずです。

#ifdef __OBJC__ 
    #define NS_BUILD_32_LIKE_64 1 // this line added 
    #import <Cocoa/Cocoa.h> 
#endif 

これは明らかです。しかし、他のプリプロセッサの新生児がこの説明を参考にしているので、私はその質問を削除しません。

そして、私はまだ境界設定が唯一の問題であったはずの理由を理解できません。コアアニメーションとは何か?

関連する問題