Qu'est-ce qui augmente le nombre de retenues d'un objet?

Voici le code que je fais référence.

//Person.h

@interface Person : NSObject {
    NSString *firstName;
    NSString *lastName;
}
@end

//Person.m

@implementation Person
- (id)init {
    if (![super init]) return nil;
    firstName = @"John";
    lastName = @"Doe";
}
@end

//MyClass.m

@implementation MyClass
    .....
- (NSArray *)getPeople {
    NSMutableArray *array = [[NSMutableArray alloc] init];

    int i;
    for (i = 0; i < 10; i++) {
        Person *p = [[Person alloc] init];
        [array addObject:p];
    }

    return array;
}
    .....
@end

Maintenant, je sais il n'y a pas de gestion de la mémoire en cours dans cet exemple de code. Ce qui serait nécessaire?

Dans le getPeople boucle, je suis alloc avec une Personne (retainCount 1), puis l'ajouter à la matrice. L'conserver le comte est maintenant de 2, non? Si c'est deux, je devrais être [p de presse]'ing après l'ajout au tableau, portant le retainCount redescendre à 1?

Je crois que c'est l'appelant responsabilité de libérer le tableau retourné par la méthode? (Ce qui permettrait également de libérer de la mémoire de la Personne, et de leurs variables d'instance, en supposant que leur compte sont à 1).

J'ai lu d'Apple de gestion de la mémoire document, mais je crois que je suis plus claire sur, est ce qui augmente la une les objets conservent le comte? Je pense que je saisir l'idée de qui est responsable de la libération, bien que. C'est la règle fondamentale, selon Apple:

Vous prenez possession d'un objet, si vous créez à l'aide d'une méthode dont le nom commence par “alloc” ou “nouveau” ou contient “copie” (par exemple, alloc, newObject, ou mutableCopy), ou si vous l'envoyez un conserver message. Vous êtes responsable de renoncer à la propriété des objets que vous possédez à l'aide de la libération ou de la autorelease. Chaque fois que vous recevez un objet, vous devez ne pas le publier.

bobDevil la phrase "seulement s'inquiéter de conserver compte que vous ajoutez à l'élément explicitement" fait cliquez sur pour moi. Après la lecture de la politique sur la Propriété d'Apple, pour l'essentiel, l'objet, de méthode, qui a créé le nouvel objet, est le seul responsable de la libération /c'est/intérêt. Est-ce correct?

Maintenant, disons que j'ai une méthode, qui reçoit un objet, et l'affecte à une variable d'instance. J'ai besoin de conserver le reçu objet de corriger, car j'ai encore un intérêt?

Si tout cela est incorrect, laissez-moi savoir.

source d'informationauteur Thomas R