2010-10-19 22 views
0

Voici un exemple tiré de projet Apple iPhone SDK:Est-ce que la copie alloue la mémoire requise?

@interface EADSessionController : NSObject <EAAccessoryDelegate, NSStreamDelegate> { 
    EAAccessory *_accessory; 
    EASession *_session; 
    NSString *_protocolString; 

    NSMutableData *_writeData; 
    NSMutableData *_readData; 
} 

... 

// initialize the accessory with the protocolString 
- (void)setupControllerForAccessory:(EAAccessory *)accessory withProtocolString:(NSString *)protocolString 
{ 
    [_accessory release]; 
    _accessory = [accessory retain]; 
    [_protocolString release]; 
    _protocolString = [protocolString copy]; 
} 

Ma compréhension est que « copie » sera également allouer la mémoire nécessaire pour copier l'objet protocolString passé comme argument, et donc il n'y a pas besoin de allouer (alloc) quelque chose avant de copier.

Ai-je raison?

Cordialement, Apple92

Répondre

0

correcte. La copie commence avec un nombre de retenues de (au moins) un, et vous êtes responsable de la relâcher éventuellement. (Voir Object Ownership Policy.)