Я пытаюсь выяснить, как вызовы методов работают в target-c.
У меня есть простая строка кода в приложении для iPhone, которая изменяет внешний вид представления, а затем вызывается контроллер представления и подключается к основному виду.
switch(pressed) {
case overall: {
IPViewController *ipv = [[IPViewController alloc] initWithParam:(IPParam*)p];
[self.view addSubview: ipv.view];
[ipCustomTabbar switchOn:YES]; // <-- here at first attempt
}
}
Бывает, что выделение ipv занимает довольно много времени, поэтому внешний вид ipCustomTabbar через некоторое время меняется. Поэтому я решил сначала переместить ipCustomTabbar.
Но с удивлением обнаружил, что это поведение совсем не изменилось. Панель ipCustomTabbar не изменяется до тех пор, пока ipv не будет инициализирован и прикреплен к просмотру.
Я ожидал, что первым делом был вызов / сообщение на switchOn, а затем выполнить остальную часть потока.
switch(pressed) {
case overall: {
[ipCustomTabbar switchOn:YES]; // <-- moved here
IPViewController *ipv = [[IPViewController alloc] initWithParam:(IPParam*)p];
[self.view addSubview: ipv.view];
}
}
EDIT:
если я закомментирую «трудоемкие» строки, все будет довольно быстро.
switch(pressed) {
case overall: {
[ipCustomTabbar switchOn:YES]; // <-- only this is fast
//IPViewController *ipv = [[IPViewController alloc] initWithParam:(IPParam*)p];
//[self.view addSubview: ipv.view];
}
}
Что мне здесь не хватает?
спасибо