【发布时间】:2014-11-25 19:56:57
【问题描述】:
我遇到了很多类似的问题,尝试了所有方法,但无法正常工作。有人可以帮我吗?
我的代码:
@implementation DSInAppSubscriptionManager
- (void)requestProUpgradeProductData
{
NSSet *productIdentifiers = [NSSet setWithObject:@"productID"];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray *products = response.products;
proUpgradeProduct = [products count] == 1 ? [products firstObject] : nil;
if (proUpgradeProduct)
{
NSLog(@"Product title: %@" , proUpgradeProduct.localizedTitle);
NSLog(@"Product description: %@" , proUpgradeProduct.localizedDescription);
NSLog(@"Product price: %@" , proUpgradeProduct.price);
NSLog(@"Product id: %@" , proUpgradeProduct.productIdentifier);
}
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
}
-(void)requestDidFinish:(SKRequest *)request{
NSLog(@"finished");
}
-(void)request:(SKRequest *)request didFailWithError:(NSError *)error{
NSLog(@"fail");
}
//-(void)dealloc{
// self.productsRequest.delegate = nil;
// [self.productsRequest cancel];
// self.productsRequest = nil;
//}
@end
现在...随着 dealloc 的评论,它给了我这样的信息: *** -[DSInAppSubscriptionManager 保留]:消息发送到已释放实例 0x18742450
如果我取消注释 dealloc 方法,它不会显示该消息,但不会调用任何委托。
我从 ViewController 调用 requestProUpgradeProductData 方法。
【问题讨论】:
-
您的 DSInAppSubscriptionManager 似乎在请求完成之前被释放。什么时候解除分配?
标签: ios objective-c xcode