从应用程序委托调用 NSObject class 方法

Calling NSObject class method from the app delegate

我正在尝试从我的 AppDelegate 的 NSObject class 调用一个方法。如果从 UIViewController 调用但在 AppDelegate 中没有运气,通常这会起作用。我的代码:

AppDelegate.m

#import "ACManager.h"

@implementation AppDelegate {
    ACManager *acManager;
}

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[acManager login];
}

ACManager.h

@interface ACManager : NSObject

-(void)login;

@end

ACManager.m

+(ACManager*)sharedInstance {
    static ACManager *sharedInstance;
    @synchronized(self) {
        if (!sharedInstance) {
            sharedInstance = [[self alloc]init];
        }
    }
    return sharedInstance;
}

-(void)login
{
    NSLog(@"login run");
}

@end

任何想法谢谢。从应用程序委托调用时是否有不同的解决方法?

对于单例你需要使用:

[[ACManager sharedInstance] login];

或为您的变量赋值:

acManager=[ACManager sharedInstance];

然后,调用:

[acManager login];

您是说:

[acManager login];

因此,您正在向 acManager 发送实例消息。但是 acManager 是零!您忘记提供实际的 ACManager 实例 并将其放置在该插槽中(将其分配给变量)。

因此,什么也没有发生。