Я думаю, что происходит то, что у каждого класса контроллера представления есть экземпляр следующей страницы в его определении, и когда мы добираемся до последней страницы, добавление экземпляра первой страницы вызывает цикл, который делает компиляторне нравится.
Не думаю, что это так.В Objective-C объекты не могут быть содержащими в других объектах, только могут ссылаться на другими объектами.То есть, вы никогда не сохраняете весь объект в переменной, вы просто сохраняете указатель на объект в переменной, поэтому объект не может содержать другой объект в том смысле, что объект в C ++ может содержатьдругой объект.
Я не совсем уверен, что происходит с вашим кодом, поскольку вы не показали нам ни код, ни ошибки, но вот как у вас может быть несколько контроллеров представления, ссылающихся друг на друга:
@interface MyViewController : UIViewController
@property MyViewController *next;
@end
// ...somewhere in your code...
MyViewController *vc1 = [[MyViewController alloc] initWithNibName:... bundle:...];
MyViewController *vc2 = [[MyViewController alloc] initWithNibName:... bundle:...];
MyViewController *vc3 = [[MyViewController alloc] initWithNibName:... bundle:...];
vc1.next = vc2;
vc2.next = vc3;
vc3.next = vc1;
Теперь я использую три контроллера вида одного и того же типа, чтобы код был коротким, но вам не нужно этого делать.Они даже не обязательно должны использовать одно и то же имя для свойства next
.Я хотел бы поощрять вас избегать зависимостей между контроллерами представления, если вы можете - каждый из ваших классов контроллеров представления действительно должен знать, какой тип является следующим?Вашим кодом будет легче управлять, если они этого не делают, так что вы можете легко изменить порядок контроллеров, если хотите.