S'il vous plaît considérer le code suivant:S'il vous plaît aidez-moi à résoudre retenir mystère dans iPhone?
//CallerClass.h
@interface CallerClass : UITableViewController {
NSMutableArray *dataArray;
}
@property(nonatomic,retain) NSMutableArray *dataArray;
-(void) setData;
//CallerClass.m
@implementation CallerClass
@synthesize dataArray;
-(id)initWithStyle:(UITableViewStyle)style {
if (self = [super initWithStyle:style]) {
[self setData];
}
return self;
}
-(void) setData
{
dataArray = [CalledClass getData];
[dataArray release];
}
//CalledClass.h
@interface CalledClass : NSObject {
}
+(NSMutableArray*) getData;
//CalledClass.m
@implementation CalledClass
+(NSMutableArray*) getData
{
NSMutableArray* tempArray = [[NSMutableArray alloc] init];
return tempArray;
}
Je veux savoir quel est le nombre de retenir pour tableauDonnees qui est TempArray. Est-ce qu'il est libéré. Je ne veux pas utiliser autorelease car je ne sais pas jusqu'à quelle période je vais en avoir besoin. Donc, je veux le libérer par moi-même. Quand j'attribue tempArray, son nombre de retenues devient 1. Mais quand je l'assigne à la variable d'instance dataArray dont la propriété est retain, le nombre de retain pour ce tableau devient 2 ou il reste 1. Comme libérant dataArray il libère de la mémoire.
Qu'en est-self.dataArray = [Appelé getData]; – rkb