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{
以下是分析仪输出的屏幕截图:
我做错了什么?
答案 0 :(得分:1)
您需要获取现有边界,修改它并重新设置:
CGRect bitbounds = mti.bounds;
bitbounds.size = CGSizeMake(1.25*fs, 3.5*fs);
mti.bounds = bitbounds;
这是因为bounds
属性使用CGRect
副本。