宏定义

-(void)DEF_test{

#define COUNT @"woca"

    NSLog(@"%@",COUNT);// -现在COUNT还有效

#undef  COUNT

//    NSLog(@"%@",COUNT);// - 现在COUNT无效了

}



带有参数的宏定义

#define sum(v1,v2) ((v1)+(v2))// - 参数和结果都要加上();

int main(){

sum(2,3);

return 0;

}



#define MJLogAllIvrs \

- (NSString *)description \

{ \

    return [self keyValues].description; \

}




// 颜色

#define MJColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]


// 随机色

#define MJRandomColor MJColor(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))


// 断言

#define MJAssert2(condition, desc, returnValue) \

if ((condition) == NO) { \

NSString *file = [NSString stringWithUTF8String:__FILE__]; \

MJLog(@"\n警告文件:%@\n警告行数:第%d\n警告方法:%s\n警告描述:%@", file, __LINE__,  __FUNCTION__, desc); \

MJLog(@"\n如果不想看到警告信息,可以删掉MJConst.h中的第23、第24"); \

return returnValue; \

}


#define MJAssert(condition, desc) MJAssert2(condition, desc, )


#define MJAssertParamNotNil2(param, returnValue) \

MJAssert2(param, [[NSString stringWithFormat:@#param] stringByAppendingString:@"参数不能为nil"], returnValue)


#define MJAssertParamNotNil(param) MJAssertParamNotNil2(param, )

/**

 *  通过字典来创建一个模型

 *  @param keyValues字典

 *  @return新建的对象

 */

+ (instancetype)objectWithKeyValues:(NSDictionary *)keyValues

{

    NSString *desc = [NSStringstringWithFormat:@"keyValues is not a NSDictionary - keyValues参数不是一个字典, keyValues is a %@ - keyValues参数是一个%@", keyValues.class, keyValues.class];

    MJAssert2([keyValuesisKindOfClass:[NSDictionaryclass]], desc, nil);

    

    id model = [[selfalloc]init];

    [model setKeyValues:keyValues];

    return model;

}



// - iOS 系统的定义有返回值的宏定义  仅供参考

#define CGPointEqualToPoint

    CG_EXTERN bool CGPointEqualToPoint(CGPoint point1, CGPoint point2)

    CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);



CG_INLINE bool

    __CGPointEqualToPoint(CGPoint point1, CGPoint point2)

    {

        return point1.x == point2.x && point1.y == point2.y;

    }




你可能感兴趣的:(宏定义)