在代码中使用这些宏,能够降低敲键盘的次数,从而提高编写效率。
与节点属性(property)相关的
CC_PROPERTY_READONLY |
CC_PROPERTY_READONLY_PASS_BY_REF |
CC_PROPERTY |
CC_PROPERTY_PASS_BY_REF |
CC_SYNTHESIZE_READONLY |
CC_SYNTHESIZE_READONLY_PASS_BY_REF |
CC_SYNTHESIZE |
CC_SYNTHESIZE_PASS_BY_REF |
CC_SYNTHESIZE_RETAIN |
详细定义见CCPlatformMacros.h。这些主要是为了模拟objective-C下的@property, readonly, retain, @synthesize等keyword。
与命名空间(namespace)相关
NS_CC_BEGIN |
NS_CC_END |
USING_NS_CC |
详细定义见CCPlatformMacros.h。
与节点的创建方法(node, create)相关
CREATE_FUNC |
NODE_FUNC |
详细定义见CCPlatformMacros.h。
与内存管理相关
CC_SAFE_DELETE |
CC_SAFE_DELETE_ARRAY |
CC_SAFE_FREE |
CC_SAFE_RELEASE |
CC_SAFE_RELEASE_NULL |
CC_SAFE_RETAIN |
日志
CCLOG |
CCLOGERROR |
CCLOGINFO |
CCLOGWARN |
详细定义见CCPlatformMacros.h。
断言
CC_BREAK_IF |
CC_ASSERT |
CCAssert |
当中CC_BREAK_IF是在CCPlatformMacros.h中定义的,它用在循环中的条件推断。
CC_BREAK_IF有一个使用很频繁的场合,就是在do{}while(0)中。这个使用语句块的作用还是挺大的。依据GOOGLE编程规范,为了降低代码层次,条件推断应该先进行,不满足则跳过后面代码。跳过有两种方式,一种是return,还有一种是break。前一种方式下,后面的所有代码都不能得到运行;后一种方式必须放在循环或者swich语句块中。假设使用do{}while(0)则能够解决第一种方式后面的代码得不到运行的问题。
CCAssert定义在ccMacros.h中,它是对CC_ASSERT的封装。与数学相关
CCRANDOM_MINUS1_1 |
CCRANDOM_0_1 |
CC_DEGREES_TO_RADIANS |
CC_RADIANS_TO_DEGREES |
详细定义见ccMacros.h。产生随机数与弧度与角度的转换。