列挙タイプによる1 duplicate symbol for architecture x 86_64エラー

1230 ワード

エラーは次のとおりです.
duplicate symbol _iphoneType in:
    /Users/midmirror/Library/Developer/Xcode/DerivedData/PRTPrinter-eixyioynyswgruahtmzninftkbmm/Build/Intermediates/PRTPrinter.build/Debug-iphonesimulator/PRTPrinter.build/Objects-normal/x86_64/PRTScreenFit.o
    /Users/midmirror/Library/Developer/Xcode/DerivedData/PRTPrinter-eixyioynyswgruahtmzninftkbmm/Build/Intermediates/PRTPrinter.build/Debug-iphonesimulator/PRTPrinter.build/Objects-normal/x86_64/PRTHomeVC.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

この問題が奇抜な点は、 を使っているが、 を使っていることだ.Googleは半日も方法を見つけられなかった.ここに記録する.
元凶はC言語の列挙タイプ定義方式である.
//  
enum iphoneType{
    iphone4s = 320*480,
    iphone5s = 320*568,
    iphone6  = 375*667,
    iphone6p = 414*736,
    iPad     = 1024*768
}iphoneType;

Objtcttive-Cの列挙タイプスタイルに変更すればよい
//  
typedef NS_ENUM(NSInteger, iphoneType) {
    iphone4s = 320*480,
    iphone5s = 320*568,
    iphone6  = 375*667,
    iphone6p = 414*736,
    iPad     = 1024*768
};

実はC言語のスタイルの前に直接typedefを付けてもいいのですが、お勧めしないで、おとなしくOCの定義通りにしましょう.
午後1時間以上無駄にした.XD