-
nil、Nil、NULL、NSNull区别以及给空对象发送消息
首先,OC中向nil发消息,程序是不会崩溃的。因为OC的函数调用都是通过objc_msgSend进行消息发送来实现的,相对于C和C++来说,对于空指针的操作会引起Crash的问题,而objc_msgSend会通过判断self来决定是否发送消息,如果self为nil,那么selector也会为空,直接返回,所以不会出现问题。视方法返回值,向nil发消息可能会返回nil(返回值为对象)、0(返回值为一 …
-
Copy修饰和深浅复制以及NSMutableObject的修饰词
先说结论1:对于不可变对象,copy都是浅复制,即指针复制。mutableCopy 都是alloc一个新对象返回。2:对于可变对象,copy和mutableCopy都是alloc新对象返回。3:不论是可变还是不可变对象,copy返回的对象都是不可变的,mutableCopy返回的对象都是可变的。4:容器类对象,不论是可变的还是不可变的,copy,mutableCopy返回的对象里所包含的对象的地址 …