现在在做的这个产品,由于需求不断的添加,工程越来越大,编译速度是越来越慢。之前就看过帖子:
使用宏定义过多的话,随着工程越来越大,编译速度会越来越慢。
当时也想过替换成常量,但是当时的替换方法有问题,导致编译的时候有很多重复的变量,替换失败了,就不了了之,直到最近,每次编译的时间实在是超出了我的容忍极限,于是下定决心,一定要替换掉。又从网上查看帖子,从简书上看到了这篇文章【如何正确使用const,static,extern】|那些人追的干货,仔细阅读,研究,询问博主之后,终于尘埃落定,替换了之前使用宏定义的常量。
现在献上一段代码:
static CGFloat const kLogoImageWidth = 100; //logo宽度
static CGFloat const kLogoImageHeight = 100; //logo宽度
static CGFloat const kLogoImageY = 110;
static CGFloat const kBtnHeight = 40;
static CGFloat const kPadding = 30;
static CGFloat const kWeixinTopPadding = 15;
static CGFloat const kWeiboLoginBottom = 230;
#define kScaleSpace(designSpace) ((designSpace)*(SCREEN_HEIGHT/667.0)) //根据iphone6 的设计稿计算缩放高度
替换的时候一定要注意数据类型。对于 CGFloat 和 NSString类型替换的时候也是一样的。代码如下:
static CGFloat const kBottomHeight = 50.0; //底部视图高度
static NSString *const CELL_TITLE_KEY = @"CELL_TITLE_KEY";
static NSString *const CELL_CONTENT_KEY = @"CELL_CONTENT_KEY";
替换完成之后代码的编译速度确实上去了,现在编译快了。希望对正在为编译速度慢感到困惑的您有所帮助!
补充说明:以上的类型常量替换宏的情况,只是适用于单个文件的情况。如果是多个文件共享的常量,苹果推荐的这样的方式
- UserInfoModelConstants.h
extern NSString *const BKUSER_AGE_KEY ;
extern NSString *const BKUSER_TELPHONE_KEY ;
extern NSString *const BKUSER_ADDRESS_KEY ;
extern NSString *const BKUSER_BRIEF_KEY ;
- UserInfoModelConstants.m
NSString *const BKUSER_AGE_KEY = @"XXXXX.userAge";
NSString *const BKUSER_TELPHONE_KEY = @"XXXXX.telphoneNO";
NSString *const BKUSER_ADDRESS_KEY = @"XXXXX.address";
NSString *const BKUSER_BRIEF_KEY = @"XXXXX.brief";
在需要使用共享常量的文件中引入UserInfoModelConstants.h
即可。如果还有什么不足的地方希望大家指出。
以上只是我在阅读别的帖子之后的一点体验和总结,如果有疑问欢迎微博@蓝光95_176探讨!