2017-11-10 6 views
1

私はので、私はグローバル変数を使用することができますシングルトンを作成しようとしていますが、私はこのエラーを取得:

Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_GlobalVariables", referenced from: objc-class-ref in MapViewController.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

この問題の解決策のいくつかは、ビルドフェーズでサードパーティライブラリを追加することを提案していますが、追加するライブラリがわかりません。ここに私のシングルトンクラスは次のとおりです。

の.h

@interface GlobalVariables : NSObject 

@property BOOL *MAP_SATELLITE_VIEW; 

+ (GlobalVariables*)sharedInstance; 

@end 

.M

#import <Foundation/Foundation.h> 

#import "GlobalVariables.h" 


@implementation GlobalVariables 

@synthesize MAP_SATELLITE_VIEW; 

#pragma mark Singleton Methods 

+ (GlobalVariables*)sharedInstance { 
    static GlobalVariables *obj = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     obj = [[self alloc] init]; 
     [obj loadVariables]; 
    }); 
    return obj; 
} 

- (void)loadVariables { 

     self.MAP_SATELLITE_VIEW = NO; 
} 

@end 

は、これは私がMapViewControllerからMAP_SATELLITE_VIEW変数にアクセスしようとしている方法です:

[GlobalVariables sharedInstance].MAP_SATELLITE_VIEW 
+0

'MapViewController.h'(または' MapViewController.m')、それらには '#import" GlobalVariables.h "'がありますか?そして、 'MAP_SATELLITE_VIEW'のクラスは何ですか?本当に 'BOOL'(あなたのコードにポインタとして宣言されているので、' loadVariables'ではそれをそのように扱わないようです。) – Larme

+0

はい、私は#import "GlobalVariables.h"を.pchファイル – student

+0

あなたは '@ synthesisize'を必要とせず、そのivarは' BOOL * 'でなく' BOOLだけです。標準的な方法でプロパティに名前を付けることもお勧めします; 'mapSatelliteViewEnabled'。 – bbum

答えて

1

メイク"GlobalVariables"が "Compile Sources"に追加されていることを確認してください。ビルドフェーズ - >ソースをコンパイルし、ファイルを追加します。

1

問題が見つかりました。右側のxcodeの.mファイルで、ターゲットメンバーシップのチェックボックスをチェックしなければなりませんでした。

関連する問題