Objecitive-C中的nil

当我学习OC的时候,我老是忍不住在对比。Actionscript是如何实现,而oc又是如何实现。这不,碰到nil的时候我发现了很大的不一样之处。作个笔记。

在as中,若是将一个对象置为null,至关于空指针,那么后续对该对象的操做会报错。而在编码中,咱们经常会判断if(obj == nul )来判断该对象是否存在,存在的话才能够进行后续操做。

而在oc中,nil就至关于c、c++中的NULL指针,通常释放对象后将对象置为nil很是重要,这样能够防止引用非法指针致使程序崩溃掉。 c++

[obj release];//此时obj的引用计数为0
[obj someMethod];//程序崩溃

[obj release];
obj = nil;
[obj someMethod];//obj此时为nil,但不会崩溃
在objective-c中咱们只用nil来检查程序的逻辑,而不用于判断对象是否为空来避免崩溃。这与c++是不一样。objective-c在运行时会自动处理向nil对象发送消息(调用方法),不会报错崩溃掉。
相关文章
相关标签/搜索