【发布时间】:2015-04-07 21:35:03
【问题描述】:
在 iOS7 SDK 和使用 MRC 时,以下代码不会返回共享实例。在运行时它只是挂起并且不会移动到下一行代码。
+(id)getInstance
{
static dispatch_once_t pred;
static IAPManager *inAppManager = nil;
dispatch_once(&pred, ^{
inAppManager = [[IAPManager alloc] init];
});
return inAppManager;
}
这个异常的原因是什么?我就是这样称呼的
IAPManager *iapManager = [IAPManager getInstance];
if ([iapManager canMakePurchases]) {
[iapManager loadStore:proUpgradeProductId];
}else{
UIAlertView *aView = [[UIAlertView alloc]initWithTitle:@"" message:@"This device is not able or allowed to make payments" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[aView show];
}
【问题讨论】:
-
您对
IAPManager init的调用是否有可能最终调用getInstance?这会导致您描述的问题。 -
它可能是。由于我没有明确调用 init 来返回 iAPManager self.. 这将调用 NSObject 中的 init。但无论如何我该如何克服这个问题。 :(
-
编辑您的帖子以包含
-[IAPManager init]的定义。 -
@robmayoff 这是一个自定义类
-
IAPManager有init方法吗?如果是这样,请发布代码。
标签: objective-c ios7