objective-c 成员变量没初始化所造成的灾难

以下是我所想要得到的效果:


但我实际得到的却是这么个玩意儿:


找了很久很久,起初还以为是弄乱了opengl的状态机,

但是其他元素的渲染却并没有出什么问题啊,很奇怪,很纠结,很揪心。。


-(void) drawPolygon:(b2Fixture*)fixture xf:(b2Transform)xf color:(b2Color)color {

    b2PolygonShape *poly = (b2PolygonShape*)fixture->GetShape();

    int32 vertexCount = poly->m_vertexCount;

    

   b2Vec2 vertices[b2_maxPolygonVertices];

    for (int32 i = 0; i < vertexCount; ++ i) {

        vertices[i] =b2Mul(xf, poly->m_vertices[i]);

        vertices[i] +=b2Vec2(0.5f,30.0f -0.5f);

        vertices[i] *=_gCfg.multiplyFactor /4;

    }

    glColor4f(color.r, color.g, color.b,_littleMapContentOpacity);

    glVertexPointer(2, GL_FLOAT, 0, vertices);

glDrawArrays(GL_TRIANGLE_FAN,0, vertexCount);

}


后来发现是因为 _littleMapContentOpacity这个成员变量在init方法里面没有被赋初值,着实害死我不少脑细胞~


//  BYRender.h

@interface BYRender :NSObject {

    GCfg *_gCfg;

    BOOL _isCutLineValid;   // 切割不合格的话会产生一道红色的残影线~

    int _durationTimes;

    float _touchPathMaxWidth;

    float _littleMapContentOpacity; // 小地图内容的透明度~

    int _cutLineDurationTimes;

}

@propertyBOOL isCutLineValid;

@propertyfloat touchPathMaxWidth;

@propertyfloat littleMapContentOpacity;

@propertyint cutLineDurationTimes;

......


//  BYRender.mm

#import"BYRender.h"


@implementation BYRender


@synthesize isCutLineValid =_isCutLineValid;

@synthesize touchPathMaxWidth =_touchPathMaxWidth;

@synthesize littleMapContentOpacity =_littleMapContentOpacity;

@synthesize cutLineDurationTimes =_cutLineDurationTimes;


+ (BYRender*) getInstance {

staticBYRender *instance;

@synchronized(self) {

if (!instance) {

instance = [[BYRenderalloc]init];

}

}

return instance;

}

- (id) init {

    if ((self = [superinit])) {

        _gCfg = [GCfg getInstance];

       _isCutLineValid =YES;

       _durationTimes =0;

       _littleMapContentOpacity = [_gCfgffk:@"littleMapContentOpacity"];

    }

   returnself;

}

......


还有一个要注意的问题:

(有些小细节不注意影响到了程序逻辑的话,找起来是很费劲的,必须要未雨绸缪)

在判断 NSString 是否等于 @"" 之前,最好还是先判断一下其是否为 nil~

if(valueStr!=nil && ![valueStr isEqualToString:@""]) {}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值