我在 xcode 4.2(旧版本)中做我的项目。对于我的应用程序,我只是在 dto 类中设置变量、数组,以便在整个应用程序生命周期中使用。所以我设置了这样的属性。
AppDTO(NSObject 的子类)
应用程序DTO.h
@property(nonatomic,retain)anotherAppDTO *aAppDTO;
@property(nonatomic,retain)NSMutableArray *array1;
@property(nonatomic,retain)NSMutableArray *array2;
@property(nonatomic,retain)NSString *string1,*string2,*string3;
应用程序DTO.m
- (id)init
{
self = [super init];
if (self) {
self.aAppDTO = [[anotherAppDTO alloc]init];
self.array1 = [[NSMutableArray alloc]init];
self.array2 = [[NSMutableArray alloc]init];
self.string1 = @"Hello";
self.string2= @"Hai";
}
}
-(void)dealloc
{
if(array1 != nil)
{
[array1 release];
array1 = nil;
}
if(array2 != nil)
{
[array2 release];
array2 = nil;
}
[aAppDTO release];
aAppDTO = nil;
[super dealloc];
}
当我在 Xcode 4.3.2 中分析我的应用程序时,我在 self.array1 和 self.array2 中收到内存警告(在线分配的对象可能泄漏......),但是当我将 self.array1 更改为 array1 时,警告消失了。
使用self的原因是什么。如果我将@property(nonatomic,retain) 设置为变量(如array1、array2、string1、string2),是否需要使用 self。
同样在dealloc方法中,我听说我们不想使用[self.array1 release],而是可以使用[array1 release]。这是对的吗?
我需要在 dealloc 方法中释放我的字符串吗?
我也在 dealloc 方法中发布 aAppDTO。如果我在 anotherAppDTO 类中分配一些对象,当我调用 [aAppDTO release] 方法时它会自动释放吗?
任何人都可以澄清我。
非常感谢, 阿尼什