2010-03-24 9 views
3

J'ai une classe de données très basique qui est sous-classée à partir de NSObject. Je déclare quelques chaînes, m'assure qu'elles ont des propriétés (nonatomic, copy), et les synthétise. La seule méthode que j'ai implémentée était dealloc() qui libère mes chaînes. Est-ce que des problèmes de mémoire peuvent surgir de cela? Y a-t-il d'autres méthodes à mettre en place?Sous-classe NSObject, peut-elle causer des problèmes?

Répondre

9

Sous-classe NSObject est quelque chose que nous faisons tout le temps. Suivez simplement les règles de gestion de la mémoire, et vous êtes prêt à partir.

4

Vous pouvez implémenter un init personnalisé si vous voulez configurer quelque chose.

-(id)init { 
    if (!(self = [super init])) 
      return nil; 

    // Set things up you might need setting up. 
    return self; 
} 

Mais seulement si vous voulez que quelque chose soit prêt avant d'appeler quoi que ce soit d'autre sur la classe. Juste avoir une méthode dealloc devrait être bien, sinon.

2

Il n'y aura pas de problème. Sous-classement NSObject est parfaitement accepté, et dans 99% des cas requis.

En sous-classe NSObject, votre sous-classe reçoit tout le comportement requis attendu de tout objet dans Cocoa/Cocoa Touch. Cela inclut des choses comme le système de gestion de la mémoire de comptage de référence utilisant retain et release etc.

1

Ce que vous faites est bien. Assurez-vous de composer le [super dealloc] à la fin de la méthode -dealloc de votre sous-classe.