Конечно;refactor myMethod
to not call viewDidLoad
.
То есть, если вы вызываете метод a
, а метод a
вызывает b
, но вы не хотитевызовите b
, тогда вам нужно изменить реализацию a
, чтобы иногда не вызывать b
.Либо изменив a
, либо создав новый метод c
в классе, содержащем a
, который не вызывает b
.
Если проблема заключается в том, что вы вызываете метод в системных рамкахи он звонит viewDidLoad
, когда вы не хотите, тогда ответ заключается в том, что вы действительно не можете делать то, что, как вы думаете, вы хотите сделать.Но это всего лишь симптом;реальный ответ заключается в том, что необходимо пересмотреть архитектуру вашего приложения, чтобы лучше соответствовать системным фреймворкам.
Edit1: Так вы говорите, что если я сделаю это, он не будет вызывать мой VDL?:
MyClassB *classB = [[[MyClassB alloc] init] autorelease];
Это создает новый экземпляр MyClassB
.Если экземпляр уже отображается на экране, то, скорее всего, вам не нужен новый экземпляр, и да, именно поэтому вызывается viewDidLoad
.
Либо создайте переменную экземпляра, которая можетуказать на уже существующий экземпляр classB
или иным способом получить этот экземпляр;повесить его на делегат приложения или что-то в этом роде.
В целом, кажется, что вы не понимаете, что означает создание объекта, а не просто ссылаетесь на него и как все это вписывается в модель создания приложения UIKit.Это немного сложно, пока вы не освоитесь.Изучите несколько примеров, показывающих, как использовать контроллеры представлений, поскольку они, вероятно, решили аналогичную проблему.