1. const与宏的区别
- 苹果一直推荐我们使用const 而不是宏,
- 编译时刻:宏:预编译 const:编译
- 编译检查: 宏没有编译检查,const有编译检查
- 宏的好处: 定义函数,方法,const不同
- 宏的坏处: 大量使用宏,会导致预编译时间过长.
const作用
- 修饰右边的基本变量或指针变量
- 被const修饰的变量只读
static
- 修饰局部变量
- 修饰局部变量,延长生命周期,跟整个应用程序有关
- 被static修饰的局部变量只分配一次内存,程序一运行就会分配内存
- 修饰全局变量
- 作用域会修改,只能在当前文件使用
extern的作用
- 声明外部全局变量,只能用于声明,不能定义
- 原理:先会去当前文件下查找有没有对应的全局变量,如果没有,才回去其他文件查找
static NSString *const name = @"lili";
.h
extern NSString *const name ;
.m
NSString *const name = @"lili";
判断一个字符串是否包含另个字符串
- 通用方法:
if ([currentText rangeOfString:text].location == NSNotFound) { // 不包含
isSelected = NO;
} else {
isSelected = YES;
}
* iOS 8 后可以使用- (BOOL)containsString:(NSString *)str NS_AVAILABLE(10_10, 8_0);
### 9 判断一个字符串是否包含另个字符串
* 通用方法:
if ([currentText rangeOfString:text].location == NSNotFound) { // 不包含
isSelected = NO;
} else {
isSelected = YES;
}
- iOS 8 后可以使用- (BOOL)containsString:(NSString *)str NS_AVAILABLE(10_10, 8_0);
2.什么情况使用 weak 关键字,相比 assign 有什么不同?
在ARC中,在有可能出现循环引用的的时候,往往要通过让其中一端使用weak来解决,比如delegate代理属性
不同点:weak此特质表明属性定义了一种非拥有关系,为这种属性设置新值时,设置方法既不保留新值,也不释放旧值.在属性所指的对象遭到摧毁时,属性值也会清空.assign的设置方法只会执行针对纯量类型的简单赋值操作.
assign可以用非OC对象,而weak必须用于OC对象.