iOS: получатель сообщения 'frame' равен нулю - PullRequest
0 голосов
/ 25 января 2012

Когда я анализирую свой код, я получаю следующую логическую ошибку:

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

в этих двух строках:

CGRect rectFrame = purchaseCell.lblValue.frame;
CGRect rectFrameBG = purchaseCell.lblValueBG.frame;

Код прекрасно работает, но просто пытается выяснить, что это говорит.Я делаю что-то не так?

РЕДАКТИРОВАТЬ: Вот полный метод:

purchaseCell.lblHeader.font = [UIFont fontWithName:@"AvenirNextLTPro-Regular" size:16];
purchaseCell.lblHeader.text = curField.fieldName;
purchaseCell.lblValue.text = curField.fieldValue;
purchaseCell.lblValueBG.text = curField.fieldValue;
purchaseCell.lblValue.font = [UIFont fontWithName:@"AvenirNextLTPro-Regular" size:16];
purchaseCell.lblValue.backgroundColor = [UIColor clearColor];
purchaseCell.lblValueBG.textColor = [UIColor clearColor];
[purchaseCell.lblValueBG sizeToFit];
[purchaseCell.lblValue sizeToFit];
CGRect rectFrame = purchaseCell.lblValue.frame;
CGRect rectFrameBG = purchaseCell.lblValueBG.frame;
NSLog(@"RectFrame X:  %.2f", rectFrame.origin.x);

purchaseCell.lblValue.frame = CGRectMake(rectFrame.origin.x-rectFrame.size.width,rectFrame.origin.y, rectFrame.size.width+14, rectFrame.size.height);
frameSizeWidth = rectFrame.size.width;
purchaseCell.lblValueBG.frame = CGRectMake(rectFrameBG.origin.x-rectFrameBG.size.width,rectFrameBG.origin.y, rectFrameBG.size.width+14, rectFrameBG.size.height);

1 Ответ

2 голосов
/ 25 января 2012

Анализатор говорит, что

purchaseCell.lblValue

оценивается как nil, поэтому разумное значение не может быть присвоено rectFrame.Что вы делаете с purchaseCell и его свойствами в другом месте кода?

«Получатель» означает объект, который получает сообщение «кадр».

Похоже, что существует некоторая ветвь кода, где ячейка или ее свойство lblValue могут иметь значение nil, а анализатору это не нравится.Предложение @StilesCrisis о проверке нулевого значения и возврате, если так, вероятно, очистит его для вас (и предотвратит любую возможную ошибку), если вы не можете найти истинную причину.

...