Analyzer在设置其中一个成员时警告结构未初始化

时间:2014-03-03 22:45:34

标签: objective-c struct initialization variable-assignment static-analysis

Clang的静态分析仪给我一个警告,我在下面设置mti.bounds。它说

  

逻辑错误 - 按值传递的struct参数包含未初始化的数据

-(void)setLabelWithIndex:(int)idx signlop:(int)silop {
   int domsi= 0;
   msi= [sls objectAtIndex:idx];
   float fs= (fontFactor*mapyd)/mapH;
   if (fs< 10){  //minfont
      fs= 10;
   }else if(fs> 36){
      fs= 36;
   }
   if (signs[silop].turn){
      domsi= 1;
      [msi setFont:[UIFont fontWithName:@"Arial-BoldMT" size:1.25*fs]];
      msi.text= @"T";
      msi.backgroundColor= [UIColor clearColor];
      if (silop== editLastLop){
         msi.textColor= [UIColor yellowColor];
      }else{
         msi.textColor= turnMinderColor;
      }
      msi.layer.borderWidth= 0;
   }else if(signs[silop].trap){
      if (numTrapsShowing< numTrapImages){
         domsi= 0;
         numTrapsShowing++;
         lopOfTrap[numTrapsShowing-1]= silop;
         mti= [sts objectAtIndex:numTrapsShowing-1];
         CGRect butbounds;
         butbounds.size = CGSizeMake(1.25*fs, 3.5*fs);
         mti.bounds = butbounds;    // Analyzer warns here
      }else{
         domsi= -1;
      }
   }else{

以下是分析仪输出的屏幕截图:

enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要获取现有边界,修改它并重新设置:

CGRect bitbounds = mti.bounds;
bitbounds.size = CGSizeMake(1.25*fs, 3.5*fs);
mti.bounds = bitbounds;

这是因为bounds属性使用CGRect 副本