必须在dealloc中释放非指针实例变量吗?

时间:2011-06-15 19:42:45

标签: iphone objective-c class sdk dealloc

我是否必须在类的release方法中为非指针变量调用dealloc

e.g。

@interface myClass : NSObject {

    BOOL isDirty; // do i have to release this?
    NSInteger hoursSinceStart; // and this?

    NSDate *myDate; // i will release the pointer in dealloc
}

@property (assign, nonatomic) NSInteger hoursSinceStart; // property to release?

@property (assign, nonatomic) BOOL isDirty; // property to release?
@end

3 个答案:

答案 0 :(得分:5)

两件事:

  1. 您只需要保留和释放对象。 BOOL和NSIntegers不是对象,它们是原始的。

  2. 您通常不应为任何release属性调用assign,因为您尚未保留它 - 当然assign是唯一有意义的类型像NSIntegers或BOOL这样的原语,因为你不能保留它们。

答案 1 :(得分:0)

您将释放扩展NSObjects的对象(或实现NSObject协议) 请阅读http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html以更好地了解内存管理。

答案 2 :(得分:0)

您无需释放BOOL或NSInteger。事实证明,NSInteger只是int的typedef(通过is it necessary to release a NSInteger in iphone?