2010-07-15 4 views
0

Selon URL système de chargement Guide de programmation Code NSConnection exemple, je peux libérer dans le cadre connectionDidFailWithError et connectionDidFinishLoading.connexion Releasing connectionDidFinishLoading causent la mauvaise instruction

Cependant, la connexion à la libération connectionDidFinishLoading provoquant

objc[19685]: FREED(id): message releaseDelegate sent to freed object=0x3b41630 
Program received signal: “EXC_BAD_INSTRUCTION”. 

Pourquoi?

Répondre

1

Si vous ne conservez pas l'objet que vous recevez de [NSConnection connectionWithRequest:], vous ne devez pas appeler release.

0

Il s'agit d'une erreur de double publication. Cela signifie que vous n'avez pas retain un objet assez de fois, ou vous l'avez envoyé trop de messages release.

+0

Je comprends la nature de l'erreur, mais tout ce que je fais est juste de créer 'NSConnection' avec' connectionWithRequest', puis de relâcher dans ces 2 délégués. Le reste des corps des méthodes de délégué sont vides. – Pablo

+0

La règle générale est la suivante: Si vous ne créez pas d'objets à l'aide de alloc et que vous ne retenez pas d'objets, vous n'avez pas besoin de les libérer. Ils disparaîtront comme par magie quand personne n'en a plus besoin (avec NSAutoReleasePool étant le magicien et autorelease étant le sortilège) – mvds

Questions connexes