release跟nil有什么区别

release 是将内存引用计数-1  nil 直接赋值为0   除非这个指针指向的空间被释放  否则就是内存泄露

nil是表示0x0,可以理解为空指针。release是释放内存。
例如:你开辟了一块内存p=[[nsobject alloc] init]; 这个时候p是指向这块内存区域的,如果你直接p=nil,会造成这块内存没有被释放,内存泄露。 如果[p release]释放了内存,但是p还是指向这个内存地址,如果在操作p会出现EXC_BAD_ACCESS。正确的做法应该是释放后,把p指向nil

你可能感兴趣的:(release跟nil有什么区别)