代码之家  ›  专栏  ›  技术社区  ›  iXcoder

关于内存管理(由接口生成器创建对象的规范)

  •  0
  • iXcoder  · 技术社区  · 14 年前

    我有一个关于对象c中的自由对象内存的问题。

    例如代码:

    @interface myCell : UITableViewCell {
    
        IBOutlet UIView* bindView;
    
        IBOutlet UIView* unBindView;
    
    }
    

    如您所见,两个对象,第一个是通过接口生成器分配和绑定的,另一个是

    在我的dealloc代码中,我试图释放它以避免内存泄漏。所以我做如下:

    - (void)dealloc {
    
    
        [bindView release];
        bindView = nil;
    
        [unBindView release];
        unBindView = nil;
    
        [super dealloc];
    }
    

    所以,我想那将是免费的。。。。。代码执行正确,但我很奇怪,因为第二个对象 unBindView 不要在代码中或通过IB赋值,这看起来应该是nil,但是代码仍然可以执行没有nil指针异常抛出。。。。

    我的问题是,我上面的免费目标代码是否是正确和最好的方式?因为 bindView 从来没有被保留过,我想应该由可可来处理?下一个问题是 取消绑定 ,我知道object是弱语言,但是这个类型变量的使用规则是什么?

    谢谢你的回答!

    1 回复  |  直到 14 年前
        1
  •  1
  •   BoltClock    14 年前

    因为第二个物体 unBindView 不要在代码中或通过IB赋值,这看起来应该是nil,但是代码仍然可以执行没有nil指针异常抛出。。。。

    在Objective-C中,向 nil 结果就是什么都没发生。这就是为什么你没有例外。一方面,它非常方便;另一方面,它可能很难追踪,而且在所有情况下都不是预期的。

    我的问题是,我上面的免费目标代码是否是正确和最好的方式?

    我觉得很好。这个 = nil 行是不必要的,因为视图控制器在调用时已经被释放了,但是我不认为它会对应用程序的代码产生负面影响。