У меня есть мой AppDelegate метод пытается установить объект в ViewController метод. Мой AppDelegate выглядит следующим образом:Повторный вызов делегата приложения
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
//Grab a reference to the UISplitViewController
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
PatientDetailViewController* patientDetailViewController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = patientDetailViewController;
//Grab a reference to the masterviewcontroller and get the first patient in the list.
UINavigationController *patientNavController = [splitViewController.viewControllers objectAtIndex:0];
PatientMasterTableViewController *patientMasterViewController = (PatientMasterTableViewController *)[patientNavController topViewController];
Patient* firstPatient = [[patientMasterViewController patientArray] objectAtIndex:0];
//Set it as the detailviews patient.
[patientDetailViewController setPatient:firstPatient];
//Set the detail's as the left's delegate.
patientMasterViewController.delegate = patientDetailViewController;
}
return YES;
}
и способ установить объект выглядит следующим образом:
-(void)setPatient:(Patient *)patient
{
if (![self.patient isEqual:patient])
{
self.patient = patient;
//Update the UI to reflect the new patient selected from the list.
[self refreshUI];
}
}
Вопрос, который я имею, что метод setPatient будет называться нон-стоп пока программа не сработает, и я понятия не имею, почему. Может кто-нибудь пролить некоторый свет на это?
Да, это классический бесконечный контур. 'self.patient = patient' совпадает с вызовом' [self setPatient: patient] ' –
Вы внедрили isEqual: для класса Patient? Если нет, этот вызов может не делать то, что вы ожидаете. –
Хороший вызов от @jshier. Хотя рекомендуется (с помощью Apple) использовать instanceVariable при инициализации свойств, вышеуказанный код следует называть только одним дополнительным временем. Маловероятно, что проверка равенства достигает многого, хотя, помимо добавления шума к вашему коду. –