私はDataHandler
クラスを持っています。これはシングルトンのように動作し、sharedHandler
オブジェクトメソッドを持っています。私はプロジェクト全体を通してそれを使用していますが、何らかの理由でAppDelegateで使用できません。AppDelegateからオブジェクトメソッドを呼び出すことができないのはなぜですか?セレクタの既知のクラスメソッドがありません
DataHandler.h
#import <Foundation/Foundation.h>
@interface DataHandler : NSObject
+ (id)sharedHandler;
- (void)logout;
@end
DataHandler.m
#import "DataHandler.h"
/**
* Singleton static method
* @return singleton instance
*/
+ (id)sharedHandler {
static DataHandler *sharedHandler = nil;
@synchronized (self) {
if (sharedHandler == nil)
sharedHandler = [[self alloc] init];
}
return sharedHandler;
}
-(void) logout {
// ...
}
@end
AppDelegate.m私は入れません
#import "AppDelegate.h"
#import "DataHandler.h"
@implementation AppDelegate {
- (void)applicationWillResignActive:(UIApplication *)application {
[[DataHandler sharedHandler] logout];
}
@end
:
この現象の原因は何ですか?
「DataHandler.h」という名前のファイルは2つありません。 –
この問題は再現できません。正しいターゲットメンバーシップが 'DataHandler.m'に設定されていることを確認してください。また、シングルトンを作成するときは、代わりにdispatch_onceを使用してください:http://blog.bjhomer.com/2011/09/synchronized-vs-dispatchonce.html – JAL
ターゲットはうまく設定されています。私が言ったように、私はこのクラスをプロジェクトのどこでも使用します。 AppDelegateから削除するだけで、プロジェクトを構築して正常に動作させることができます。 @KevinBallardあなたは正しいです...私はgit 2つのテンプレートファイルを更新した後DataHandler .h&.mプロジェクトのナビゲータに追加されていない私のプロジェクトのルートディレクトリに表示され、私はそれらを見ていない。私はFinderを使って検索しましたが、現れました...私はそれを推測しませんでした:/ありがとうございます – Krystian