У меня есть рабочий фрагмент кода в делегате приложения, который содержит ссылку на представление, которое может или не может быть создано во время использования приложения. Этот код будет в конечном итоге вызываться только после того, как указанный объект будет создан, поэтому вероятность сбоя отсутствует.
Однако компилятор обнаруживает эту ссылку и выдает предупреждение:
warning: Semantic Issue: Instance method
'-dismissPurchasingViewAndUpdateSetupView' not found (return type
defaults to 'id')
В двух словах, это то, что происходит:
В заявке делегат:
@interface appDelegate : NSObject
{
NSObject *purchasingView;
}
@property (nonatomic, retain) NSObject *purchasingView;
@end
@implementation appDelegate
@synthesize purchasingView;
-(void)aMethod
{
[purchasingView dismissPurchasingViewAndUpdateSetupView];
}
В контроллере вида:
-(void) someOtherMethod
{
//Let the app delegate know about the reference to this view
appDelegate *appDelegate = (appDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.purchasingView = self;
}
-(void)dismissPurchasingViewAndUpdateSetupView
{
[self dismissModalViewControllerAnimated:YES];
}
Делегат приложения реализует SKPaymentTransactionObserver
и получает уведомления App Store, инициируемые покупками в контроллере представления. Когда покупка завершается, делегат приложения уведомляет контроллер представления о своем отклонении.
Это разумный способ сделать это? Есть ли способ заставить компилятор игнорировать тот факт, что при первом запуске приложения указатель purchasingView
указывает на ноль?