0

私は番号ivarを保持するクラスを持っています:

//  Answer.h

#import <Foundation/Foundation.h>


@interface Answer : NSObject{
    @public
    int firstNumber;
    int secondNumber;
    char myOperator;
}

@end

ここでコードにアクセスしようとします

    numberGroup->firstNumber = arc4random() % 1;
    numberGroup->secondNumber = arc4random() % 10;
    numberGroup->myOperator = arc4random() % 4;

そして、私はこのエラーを受け取ります:

Ld /Users/jack/Library/Developer/Xcode/DerivedData/PowerBuilders-emehzkfcgntrhofxhvurovjmnugn/Build/Products/Debug-iphonesimulator/PowerBuilders.app/PowerBuilders 通常の i386 cd "/Users/jack/Desktop/Xcode/Assorted Apps/PowerBuilders" setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin :/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator .platform/Developer/SDKs/iPhoneSimulator5.1.sdk -L/Users/jack/Library/Developer/Xcode/DerivedData/PowerBuilders-emehzkfcgntrhofxhvurovjmnugn/Build/Products/Debug-iphonesimulator -F/Users/jack/Library/Developer/Xcode/DerivedData/PowerBuilders-emehzkfcgntrhofxhvurovjmnugn/Build/Products/ Debug-iphonesimulator -filelist /Users/jack/Library/Developer/Xcode/DerivedData/PowerBuilders-emehzkfcgntrhofxhvurovjmnuugn/Build/Intermediates/PowerBuilders.build/Debug-iphonesimulator/PowerBuilders.build/Objects-normal/i386/PowerBuilders.LinkFileList -mmacosx- version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50100 -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/jack/Library/Developer/Xcode/DerivedData/PowerBuilders- emehzkfcgntrhofxhvurovjmnuugn/Build/Products/Debug-iphonesimulator/PowerBuilders.app/PowerBuilders

アーキテクチャ i386 の未定義シンボル:
"_OBJC_IVAR_$_Answer.firstNumber"、次から参照: -[ViewController lesson1] の ViewController.o "_OBJC_IVAR_$_Answer.myOperator"、次から参照: -[ViewController lesson1] in ViewController.o "_OBJC_IVAR_$_Answer" .secondNumber"、参照元: -[ViewController lesson1] in ViewController.o ld: アーキテクチャ i386 のシンボルが見つかりませんでした。clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用します)。

4

1 に答える 1

2

コンパイラは、クラスのセクションを処理するときに_OBJC_IVAR_$_Answer.firstNumber、クラス メタデータの一部としてデータ セグメントにシンボルを生成します。そのシンボルのデータは、オブジェクト内のインスタンス変数のオフセットです。Answer@implementationAnswerfirstNumberAnswer

セクションを含むファイルにアプリをリンクしていないか、コンパイラがセクションを確認する前にインスタンス変数@implementation Answerの宣言を確認していません。これらがすべて真であることを確認します。firstNumber@implementation Answer

  • Answer.mターゲットの Compile Sources フェーズに含まれています。
  • Answer.mセクションが含まれてい@implementation Answerます。
  • Answer.mAnswer.hの上部にインポートしAnswer.mます。
于 2012-09-20T03:32:30.000 に答える