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

Ios 为什么可以';我不能从AppDelegate调用对象方法吗?选择器没有已知的类方法,ios,objective-c,Ios,Objective C,我有一个类似于单例的DataHandler类,它有sharedHandler对象方法。我在整个项目中都使用它,但由于某些原因,我不能在AppDelegate中使用它 DataHandler.h #import <Foundation/Foundation.h> @interface DataHandler : NSObject + (id)sharedHandler; - (void)logout; @end AppDelegate.m

我有一个类似于单例的
DataHandler
类,它有
sharedHandler
对象方法。我在整个项目中都使用它,但由于某些原因,我不能在AppDelegate中使用它

DataHandler.h

    #import <Foundation/Foundation.h>

    @interface DataHandler : NSObject

    + (id)sharedHandler;
    - (void)logout;
    @end
AppDelegate.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
#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'

此行为的原因是什么?

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

您没有两个名为
DataHandler.h
的文件,是吗?我无法重现此问题。确保在
DataHandler.m
上设置了正确的目标成员身份。另外,在创建singleton时使用dispatch_一次:Target设置得很好,就像我说的,我在项目中的任何地方都使用这个类,只要从AppDelegate中删除它,项目的构建和工作都会很好@凯文巴拉德你是对的。。。更新git后,我的项目根目录中出现了两个模板文件DataHandler.h&.m,它们没有添加到项目导航器中,因此我没有看到它们。我用Finder搜索它,它出现了。。。我不会猜到的:谢谢你,凯文,事情就是这样。我没有在AppCode中看到该文件,因为它在项目子目录中存储的其他类中工作,所以我没有预料到原因。