我在做C++时候有个习惯
初始化的时候习惯把指针初始化成NULL
在析构的时候习惯#define MEMORY_FREE(a) if(a){delete a; a=NULL};用这个宏删除指针。
在使用这个指针的时候习惯if(指针),先判断指针是否为空,再使用这个指针。
在iPhone中加入在成员变量的时候定义了一个NSString* str;
我是否可以在viewDidLoad中写 str = nil;
使用的时候 if(str){...}
在dealloc中 if(str){[str release]; str = nil;}不知道这种使用方法是否正确,语法是否正确,还请大牛指点。

解决方案 »

  1.   

    这么用没问题,但是没必要。obc里面,nil 调用其它方法是没错得。也就是实例可以为nil, 比如NSString* str = nil; [str dosomething]; is ok
    delloc里面,没必要判断是不是为空,因为[nil release] 也没错。release完后,不必要设置为nil.因为这个稀构函数。
      

  2.   

    objC 里面给nil发消息不会有异常,完全没必要这么麻烦,你不判断空指针也没什么问题.
      

  3.   

    这样做木有问题,iphone采用的是智能指针,你可以详细学习,和java是一样的