Странная проблема с [cell viewWithTag:] - PullRequest
0 голосов
/ 13 ноября 2011

Я только что проанализировал все приложение для iPhone и получил Логическую ошибку .

UILabel *first_label = (UILabel *) [cell viewWithTag:1];
UILabel *second_label = (UILabel *) [cell viewWithTag:2];

[first_label setText:@"text"];
[second_label setText:@"text"];

NSLog(@"%@", first_label); // it exist
[first_label setFrame:CGRectMake(first_label.frame.origin.x, 10, 10, 10)];

Я получил эту проблему:

получатель сообщения 'frame' равен nil и возвращает значение типа 'CGRect', которое будет мусором

Если я изменю:

[first_label setFrame:CGRectMake(first_label.frame.origin.x, 10, 10, 10)];

с

[first_label setFrame:CGRectMake(10, 10, 10, 10)];

он счастлив.Это нормально?Я могу получить ярлык без проблем, и я могу использовать его везде, но когда я пытаюсь получить его структуру, это говорит об этой проблеме.У тебя есть идеи?

1 Ответ

2 голосов
/ 13 ноября 2011

Анализатор просто видит, что нет места, куда вы добавляете представление с тегом 1 в свой код, и именно поэтому

UILabel *first_label = (UILabel *) [cell viewWithTag:1]; 

вероятно вернул бы ноль. Просто установите точку останова и проверьте возвращаемое значение. Если это не ноль, то, вероятно, анализатор не понимает что-то в вашем коде, потому что это также не идеально.

...