2010-11-07 4 views

Répondre

1

Non, n'envoyez pas d'autres messages de version. Ce sont différents références au même objet.

Habituellement, lorsque vous mélangez des méthodes Core Foundation et des méthodes Cocoa, vous conservez l'objet dans votre base (si vous travaillez dans Cocoa, conservez-le comme NSString) et lancez-le lorsque vous devez utiliser l'un des les méthodes de l'autre framework (comme le passage de la chaîne à une méthode Core Foundation, il suffit de la convertir en CFString puis au lieu de garder plusieurs références autour).

+0

Donc, puisque ce sont des références différentes au même objet, cela signifie-t-il que la libération de l'une des références est suffisante après que je l'ai fait? – Chiron

+0

Oui, c'est exactement ce que cela signifie. Et si vous voulez garder une référence plus longtemps, vous devrez prendre possession de cette référence avec un message de conservation ou de copie, puis la relâcher plus tard. Dans votre exemple, une fois que vous appelez CFRelease() sur rawName, vous ne pouvez plus accéder en toute sécurité à rawName ou à name. –

+0

Dans mon cas, j'ajoute firstName à NSMutableArray et ensuite je suis CFRelease rawName, est-ce que je le fais correctement? – Chiron

1

Dans cette situation * * nom et point de rawName au même objet. CFRelease() 'rawName provoquera un EXC_BAD_ACCESS lorsque vous essayez d'utiliser le nom.

Questions connexes