Я выполняю это упражнение в книге, и в какой-то момент есть реализация для метода, который создает метки, помещенные случайным образом в представление. Вот код:Две строки кода, которые говорят то же самое?
1 - (void)drawHypnoticMessage:(NSString *)message{
2 for(int i =0; i<20; i++){
3 UILabel *messageLabel = [[UILabel alloc] init];
4 messageLabel.backgroundColor = [UIColor clearColor];
5 messageLabel.textColor = [UIColor whiteColor];
6 messageLabel.text = message;
7 [messageLabel sizeToFit];
8 int width = self.view.bounds.size.width - messageLabel.bounds.size.width;
9 int randomX = arc4random() % width;
10 int height = self.view.bounds.size.height - messageLabel.bounds.size.height;
11 int randomY = arc4random() % height;
12 CGRect frame = messageLabel.frame;
13 frame.origin = CGPointMake(randomX, randomY);
14 messageLabel.frame = frame;
15 [self.view addSubview:messageLabel];
16 }
17 }
Это работает нормально. Мой вопрос касается линии 12 и 14. Когда я переписывал это упражнение в Xcode из книги, и я достиг линии 12, я инстинктивно изменил его:
12 CGRect frame;
Это не сработало, и я не» понять почему. Для меня строки 12 и 14:
12 CGRect frame = messageLabel.frame;
14 messageLabel.frame = frame;
Говорят то же самое дважды, конечно. Может кто-нибудь объяснить, почему это не так?
Я думаю, что вы должны понимать, что = означает назначение в этом контексте. Он не представляет собой равенство (как в случае с IF на некоторых языках). Следовательно, A = B не означает то же самое, что и B = A, а строка 13 настраивает внутреннее значение перед повторным назначением кадра –