两个会导致程序崩溃的注意点

1.接口变量为空的情况

    当一个文件需要使用另一个文件的接口变量时,如果这个接口变量为空的话会导致程序奔溃,因为访问了一个为nil的变量。这个地方比较隐蔽,因为是直接拿过来就用了,其实在大部分情况下访问nil的变量都会导致崩溃。
    因此,在对一个未知变量进行操作的时候最好要进行判断,因为这个变量可能别人给你传的就是nil。

2.NSMutableDictionary的setValue:forKey:和setObject:forKey:

    某次设置网络参数的时候,我用setObject:forKey:设置,发现每次程序运行到网络请求部分就崩溃,当时以为是网络请求完的结果处理不当导致的。经过断点发现每次运行到setObject:forKey:的时候就崩溃。于是发现自己平常使用setObject:forKey:和setValue:forKey:都是随机的,没有注意到这两个的区别。
    区别就是:
    1.setValue:forKey:中value能够为nil,为空的时候会调用removeObject:forKey:方法,其实就是等于没设置,但不会导致程序奔溃;但是,setObject:forKey:中value不能够为nil,不然会导致程序崩溃。
    2.setValue:forKey:中key只能传NSString类型,而setObject:forKey:的key可以任何类型

你可能感兴趣的:(ios开发原创例子)