2010-02-03 3 views
0

Quelqu'un dans ce forum m'a proposé une solution de code qui fonctionnait très bien, mais pour ma compréhension, je voudrais savoir quelle est la différence entre les 2 blocs de code:réutilisable NSMutableDictionary

Bloc 1

NSMutableDictionary* step_info = [NSMutableDictionary dictionary]; 

Bloc 2

NSMutableDictionary* step_info = nil; 
step_info = [NSMutableDictionary dictionary]; 

Il est peut-être aussi important de mentionner que step_info doit être rempli et réutiliser à plusieurs reprises pour charger dans une autre NSMutableDictionary. Merci pour votre aide

+0

Je responsed à cette autre question. C'est juste mon style personnel pour initialiser les variables dans un état connu. Ce n'est pas nécessaire dans ce cas. Cela pourrait avoir plus de sens avec des variables ou des structures plus complexes. Cela a moins à voir avec la programmation iPhone et plus avec la programmation et le style C. –

Répondre

2

Aucun. Le compilateur optimise step_info = nil et il vous reste exactement le même code.

Voici une autre approche que vous pourriez prendre:

NSMutableDictionary *step_info; 
step_info = [NSMutableDictionary dictionary]; 
+0

Ok, voici ma question encore: Si j'ai utilisé ce code de ligne step_info = [dictionnaire NSMutableDictionary]; plusieurs fois à différents endroits dans mon programme, que fait-il de mon NS_mutabledictionnary step_info? – user261874

+1

@gpsdev: Les dictionnaires 'step_info' précédents ne sont plus accessibles une fois remplacés, remplissant ainsi le pool autorelease. – kennytm

0

Ayant NSMutableDictionary* step_info; d'abord vous permet d'utiliser step_info = [NSMutableDictionary dictionary] plus tard dans le même bloc de code.

Si vous souhaitez attribuer une valeur à step_info dans plusieurs méthodes, il est préférable d'ajouter NSMutableDictionary* step_info dans la section @interface du fichier d'en-tête.

De cette façon, vous pouvez utiliser step_info = [[NSMutableDictionary alloc] init] dans toute méthode dans votre fichier d'implémentation, puis attribuer des valeurs et des clés de cette façon: [step_info setValue: value forKey: key];