Я вырываю волосы, я перенес свой старый проект в дугу, и у меня появляется эта ошибка: * Завершение работы приложения из-за необработанного исключения 'NSGenericException', причина: '- [ UIPopoverController dealloc] достигнут, пока всплывающее окно все еще видно. '
Я прочитал некоторые темы, и я запутался, некоторые говорят, что при использовании делегатов использовать слабую ссылку, но с другой стороны, при использовании всплывающих окон использовать сильную ссылку на свойство, может кто-нибудь дать мне пример того, как лучше всего использовать ARC и делегаты с поповером, внутри которого есть кнопка, которая меняет цвет фона, например?
Из того, что я прочитал, я продолжаю слышать, что в контроллере вида используется переменная экземпляра, вот она в моем контроллере основного вида:
@property (nonatomic, strong) UIPopoverController *currentPopover;
и реализация метода в файле контроллера основного вида:
- (IBAction)ShowPopTextColor:(id)sender {
if (currentPopover == nil) {
TimerTextColor *timerTextColor = [[TimerTextColor alloc]init];
timerTextColor.delegate =self;
UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:timerTextColor];
[pop setDelegate:self];
[pop setPopoverContentSize:CGSizeMake(320, 240)];
[pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//[pop release];
} else {
[currentPopover dismissPopoverAnimated:YES];
currentPopover = nil;
}
}
вот мой заголовок всплывающего контента:
@protocol colorChooserDelegate
-(void) colorSelected:(UIColor*)thecolor;
@end
@interface TimerTextColor : UIViewController{
id<colorChooserDelegate> delegate;
IBOutlet UIButton *colorView;
}
- (IBAction)buttonTapped:(id) sender;
@property (nonatomic,strong) id<colorChooserDelegate>delegate;
@property (nonatomic,strong) UIButton *colorView;
@end
Что я делаю не так?