私は私のコードを分析すると、私は次の論理エラーを取得:のiOS:メッセージ「フレーム」のレシーバは、ゼロ
メッセージ「フレーム」の受信機がnilであると「CGRect」意志型の値を返します。ごみになる。この2行の
:
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);
私の推測: 'purchaseCell'、' purchaseCell.lblValue'または 'purchaseCell.lblValueBG'コンパイラはそれができると考えて、いくつかのシナリオで、または少なくとも' nil'できることを示しているように思われます。これらの場合、 '.frame'は不正な値を返す可能性のある' nil'オブジェクトに送られます。これが可能であるかどうかを確認することができます(境界ケースのみであっても)。そうでない場合、この警告は、コンパイラがどのコードパスを取るかを予測する能力が限られていることに起因します。 –