2011-03-29 70 views
0

我知道这可能是一个简单的问题,但我必须确保我在管理内存方面进展顺利。 我在.h文件中下面的代码:我应该释放从NSArray中检索到的对象吗?

@interface Class1 : NSObject { 
    NSArray * _Objects; 
} 
@property (retain) NSArray * Objects; 
@end 

和.m文件下面的代码:

@implementation Class1 
@synthesize Objects = _Objects; 
#pragma mark - 
#pragma mark Initializers 
- (id)init { 

    self = [super init]; 
    if (self) { 
     NSMutableArray * objects = [[NSMutableArray alloc] init]; 
     NSObject * object1 = [[NSObject alloc] init]; 
     NSObject * object2 = [[NSObject alloc] init]; 
     NSObject * object3 = [[NSObject alloc] init]; 
     [objects addObject:object1]; 
     [objects addObject:object2]; 
     [objects addObject:object3]; 
     [object1 release]; 
     [object2 release]; 
     [object3 release]; 
    } 
    return (self); 
} 
#pragma mark - 
#pragma mark Some Method 
- (void)method { 
     for (NSObject * object in self.Objects) { 
      // do some thing 
      [object release]; // (1) ? 
     } 
     NSObject * object = [self.Objects objectAtIndex:0]; 
     [object release]; // (2) ? 

     for (NSObject * object in _Objects) { 
      // do some thing 
      [object release]; // (3) ? 
     } 
     NSObject * object = [_Objects objectAtIndex:0]; 
     [object release]; // (4) ? 
} 

和我的问题是所有的呼吁释放是正确的(从1到4)如果不是什么是对的,什么不对。或者当NSArray(假定它已经用NSMutableArray初始化的事实)保留了对象,并且它没有保留时,这是另一个短语?

在此先感谢。

回答

2

不,你不应该释放它。一条简单的规则是:

如果你没有分配或保留对象,那么不要释放它。

+0

非常感谢你让安静简单的遵循。 – Mousa 2011-03-29 10:26:54

2

这些调用都不正确。您只应该分配或保留release对象。

+0

...然后只有一次。 – 2011-03-29 10:25:39

+0

谢谢你的回答。 – Mousa 2011-03-29 10:28:25

相关问题