我必须保持AppDelegate
课程完整(我不拥有),所以我无法将我的SDK初始化为didFinishLaunchingWithOptions
的一部分,但我想要类似的效果
基本上我只能向项目中添加文件而不改变它们(这就是为什么我使用+load
函数)
安全(并被认为是一种良好做法):
NSNotificationCenter
UIApplicationDidBecomeActiveNotification
+load
以下是代码:
+(void) load{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActiveNotification:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
}
+ (void)applicationDidBecomeActiveNotification:(NSNotificationCenter *)notification{
[[NSNotificationCenter defaultCenter] removeObserver:self];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// ran some SDKs initializations code
});
}
答案 0 :(得分:0)
AppDelegate中有一个方法,当应用程序变为活动状态时,该方法已被调用:
- (void)applicationDidBecomeActive:(UIApplication *)application;
因此,不,这不是一个好习惯。
此外,您正在以观察员身份注册该课程。这样的事情应该由一个类的实例来完成,例如AppDelegate。