遇到特定於iOS 4.0的SKProductsRequest的問題。有問題的代碼:調用[SKProductsRequest start]在iOS 4.0上掛起
- (void)requestProductData
{
NSSet *productIdentifiers = [NSSet setWithObjects:kLimitedDaysUpgradeProductId, kUnlimitedUpgradeProductId, nil];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"didReceiveResponse");
}
當[SKProductsRequest開始]被調用時,該productsRequest:didReceiveResponse:委託方法永遠不會調用;此外,整個應用程序掛起,並完全沒有響應輸入。很明顯,這對我們的iOS 4.0用戶來說是一個巨大的問題,因爲它不僅打破了付款,而且使應用程序完全無法使用。
一些其他的事情要注意:這隻發生在iOS 4.0; iOS 4.2,3.x都很好。另外:如果委託沒有在SKProductsRequest上設置(即註釋掉「self.productsRequest.delegate = self」這一行),該應用程序不會掛起(但當然在這種情況下,我們無法獲得產品信息)。此外,問題仍然重現了產品請求中的所有內容:didReceiveResponse:回調(該方法從未真正被調用)。最後,如果productIdentifiers NSSet對象初始化爲空集,則掛起不會發生。
有沒有人經歷過這個?對這裏可能發生的事情有任何想法/想法,以及我們如何能夠解決這個問題?
注意:事實證明,這是我們實現的類別的一個問題,它會覆蓋NSString方法,並導致它在由低級別應用內SDK調用時在無限循環中運行。所以,SDK沒有一個通用的問題。獲得的教訓:不要覆蓋核心可可方法! – figelwump 2011-02-22 19:45:44