0

私の DataCell.h では、インターフェイスの前にグローバル変数を宣言しました。

extern NSInteger MYGlobalVariable;

私のDataCell.mで

変数の値を設定します:

NSInteger MYGlobalVariable = 35;

私の他のクラス MyTableViewController.m で

DataCell.h をインポートしてから、int の値をラベルに設定しようとしました。

_testLabel.text = [NSString stringWithFormat:@"%i" , MYGlobalVariable];

ただし、アプリケーションをビルドしようとすると、次のエラーが発生します。

  • アーキテクチャ i386 の未定義シンボル:"_MYGlobalVariable"、参照先: MyTableViewController
  • エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)
4

3 に答える 3

3

あなたが上で言ったことに基づいて、あなたはすべて正しくやっています。これは、上記の詳細の 1 つがコードと一致しないと思われます。

extern宣言は変数宣言と一致していますか? (例: 間違って別のスペルを使用していないなど)

.m の変数宣言の前に誤ってstaticキーワードが付けられていませんか?

あなたのNSInteger MyGlobalVariable = 35行は実際にメソッド内にありますか? もしそうなら、それはそのメソッドにローカルな変数を宣言するだけです。中括弧内にないことを確認してください。ファイルの最も外側のレベルでフローティングする必要があります。@implementationそれが役立つ場合は、ブロックの前に置くことができます。

それでも問題が解決しない場合は、実際のコードを提示して、何が問題なのかをよりよく確認できるようにする必要があります。

于 2013-04-02T13:23:56.760 に答える