#define 宏定义 预处理 字符替换 没有类型,不做类型检查 (不分配内存)
const常量 有具体的类型,编译阶段执行类型检查 (分配内存)
一般是宏定义
如:#define kAppKey @"kAppKey"
添加宏定义,将在文件中需要使用到的常量,字符串等用宏定义。
#define KEY_BANK_TAIL @“bank_tail"
宏、常量名都要使用大写字母,用下划线‘_’分割单词
#define URL_GAIN_QUOTE_LIST @"/v1/quote/list"
#define URL_UPDATE_QUOTE_LIST @"/v1/quote/update"
#define URL_LOGIN @"/v1/user/login”
以 k开头。后面遵循大写驼峰命名。「不带参数」
#define kHomePageDidScroll @"com.xq.home.page.tableview.did.scroll"
#pragma mark - Life Cycle
#pragma mark - override
#pragma mark - Intial Methods
#pragma mark - Target Methods
#pragma mark - UITextFieldDelegate
#pragma mark - Setter Getter Methods
可以使用代码块快捷键https://www.jianshu.com/p/e5609cf43a4f
形容词性的BOOL属性的getter应该加上is前缀
@property (nonatomic, assign, getter=isEditable) BOOL editable;
类A需要将类B的实例变量作为它公共API的属性。这个时候,我们不应该引入类B的头文件,而应该使用向前声明(forward declaring)使用class关键字,并且在A的实现文件引用B的头文件。
addObject之前要非空判断
禁止在代码中直接写死字符串资源,必须要用字符串ID替代
网友评论