新しい機能を追加したアプリケーションがあります。 これはデバッグモードでテストされましたが、リリース用のコンパイルで多数のエラーが発生しました。ターゲットとしての「標準(32/64-bit Intel)」アーキテクチャは実際には何を意味しますか?
これは、NSViewクラスとCALayerクラスの間でポイントを変換するコールによって引き起こされたものです。これを修正するために
- (NSPoint)convertPoint:(NSPoint)aPoint fromView:(NSView *)aView
- (CGPoint)convertPoint:(CGPoint)aPoint toLayer:(CALayer *)layer
error: incompatible type for argument 1 of 'convertPoint:toLayer:'
試みは他のためのエラーのいずれかのセットを交換の結果、私はNSPointで問題を発見: -
座標はフロートで表現された以前のMac OS X 10.5にCGFloat値ではなく値です。 64ビットシステムを構築する場合、または64ビットのように32ビットを構築する場合、NSPointはCGPointにtypedefされます。
"標準(32/64ビットIntel)"アーキテクチャでこれを "64ビットIntel"に変更すると、この問題が解決されました。 NSPointとCGPointの間の明示的な変換を含めることで問題を解決できますが、これは不器用です(64ビットでは不要です)。
「標準(32/64ビットIntel)」アーキテクチャが実際に意味するものを発見しようとしましたが、空白が描かれました。私が見つけることができる唯一のものはこれでした: -
製品が構築されるアーキテクチャのリスト。これは、通常、プラットフォームによって提供される定義済みのビルド設定に設定されます。複数のアーキテクチャが指定されている場合、ユニバーサルバイナリが生成されます。
アプリケーションパッケージ内を巡っても、標準(32/64ビットIntel)と64ビットIntelでは大きな違いはありませんでした。
誰もがこれを知ってもらえますか?10.6以降をターゲットとするアプリケーションで「標準(32/64-bit Intel)」を作成しようとすると何か問題がありますか?
ありがとう:
アップルは、関連文書を持っています。私は#define NS_BUILD_32_LIKE_64 1を試してみましたが、これは役に立たなかったようですが、私は64ビットに固執しています。私はその文書を読んだが、64ビットを落胆させたようだ。 – Milliways
@Milliways:64ビットを無視する?それはもう一つの方法です。現代のコードでは、32ビットのサポートはお勧めしません。 –