objective-c 成员变量没初始化所造成的灾难
来源:互联网 发布:mac设置铃声 编辑:程序博客网 时间:2024/06/07 23:57
以下是我所想要得到的效果:
但我实际得到的却是这么个玩意儿:
找了很久很久,起初还以为是弄乱了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:@""]) {}
- objective-c 成员变量没初始化所造成的灾难
- Objective-C成员变量的作用域
- objective-c 成员变量的作用域
- Objective-c的成员变量访问权限
- 实例变量与成员变量的区别 Objective-C
- 成员变量的初始化
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
- iOS --- Objective-C中类的成员变量与属性
- 黑马程序员---Objective-C 成员变量的作用域
- 使用Objective-C的+(void)initialize初始化static变量
- 使用Objective-C的+(void)initialize初始化static变量
- 使用Objective-C的+(void)initialize初始化static变量
- 使用Objective-C的+(void)initialize初始化static变量
- Objective-c - block变量的声明和初始化
- C语言中变量没有初始化 所带来的问题
- C++_类_不同类型成员变量的初始化方式
- C++成员变量的初始化
- 特殊成员变量的初始化
- VMware中设置与Windows平台文件共享
- struts 2读书笔记-----struts2的开发流程
- CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
- GNU/Linux中解决多线程互斥同步问题(生产者消费者同步问题)
- 第6周作业
- objective-c 成员变量没初始化所造成的灾难
- 如何用VC中的CHtmlView取得网页的HTML源码
- iocp实例
- Linux fork哪些被继承,哪些不被继承
- ComboBox的操作
- Keil+S3C2440裸机代码编译环境搭建
- 三网融合情况下,实时语音通信技术的研究
- CentOS JDK + TOMCAT + MYSQL + APACHE 配置
- 2012年寒假假期总结