为什么我不能从AppDelegate调用对象方法?没有已知的选择器类方法

时间:2017-09-05 18:20:28

标签: ios objective-c

我有一个DataHandler类,它的行为类似于单身,它有sharedHandler对象方法。我在整个项目中使用它,但出于某种原因,我无法在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

我一直在:

Error: no known class method for selector 'sharedHandler`
Error: no known instance method for selector 'logout'

这种行为的原因是什么?

1 个答案:

答案 0 :(得分:3)

您有两个名为DataHandler.h的文件,而AppDelegate.m中的导入正在拾取错误的文件。请注意,只要它位于磁盘上的文件夹中,它可能会拾取一个实际上不在您项目中的文件。