2009-07-30 6 views
12

J'ai un UITableView comme premier écran avec un contrôleur UINavigation.Qu'est-ce que retainCount dans Objective-C?

Dans mon premier écran, je NSLog(@"Home Screen retain Count=%d",[self retainCount]); et il se connecte 6 à l'appel de viewDidLoad.

Est-ce correct?

Répondre

15

Le paramètre retainCount représente le nombre de revendications de propriété en attente sur l'objet. Vous prenez la propriété d'un objet si vous le créez à l'aide d'une méthode dont le nom commence par "alloc" ou "new" ou contient "copy" (par exemple, alloc, newObject ou mutableCopy) ou si vous l'envoyez un message de retenue. Tous ces éléments incrémentent le retainCount.

Vous renoncez à la propriété en utilisant "release" ou "autorelease". Ceux-ci décrémentent le retainCount.

Cependant, vous ne devriez jamais faire attention à la valeur de retainCount, c'est au mieux déroutant, au pire trompeur. Il suffit de suivre le memory management rules - prenez possession de la propriété lorsque vous avez besoin de garder une référence à un objet et de renoncer à la propriété lorsque vous avez terminé, et vous n'aurez pas de problème.

Si vous regardez retainCount, vous allez dans le mauvais sens et vous vous perdrez dans la confusion.

1

Cela semble bien. Pourquoi aurait-il tort?

En général, essayer de déterminer des choses à partir du nombre de retenues est une mauvaise idée. Il n'y a pas de règles sur le nombre de fois où vous pouvez conserver un objet. La seule règle est que chaque retenue doit être équilibrée avec une libération.

Questions connexes