1

フレームワークを構築し、GHUnit で単体テストを書いています。フレームワークのアクセサ メソッドの 1 つが NSInteger を返します。

次のようなテストで期待値をアサートします。

GHAssertEquals(1320, request.port, @"Port number should be 1320");

AppKit UI ベースのフロントエンドでテストを実行すると、このアサーションに合格します。

ただし、コマンド ラインでテストを実行すると、ハードコードされた 1320 を として型キャストしない限り、型の不一致で失敗します(NSInteger)。整数がコンパイラによって解釈される方法の違いの原因は何ですか? コマンドラインで xcodebuild がハードコードされた整数に異なるデータ型を使用していますか?

4

1 に答える 1

2

異なるアーキテクチャ用にアプリケーションを構築していますか (おそらく、1 つがユニバーサルを構築し、もう 1 つが 1 つのアーキテクチャを構築しているためです)。NSInteger は、ターゲット アーキテクチャ ( src ) に応じて 32 ビットまたは 64 ビットとしてビルドされます。これは、コンパイラが小さな定数に対して選択するものとは異なる場合があります。キャストは確かにあなたの意図を明確にします。

于 2010-05-27T04:01:43.183 に答える