Je dois construire une NSString qui ressemble à ce qui suit:dynamique, NSString localisé
Nom: Craig Buchanan
Téléphone: 800-555-1212 Courriel
: [email protected]
Où :
- chaque ligne (par exemple, téléphone) est inclus ou exclu en fonction de la valeur d'un UISwitch
- la partie de touche de la chaîne (c.-à-d. la partie à gauche de ':') est localisée
- la partie valeur provient d'un objet UITextField.
Mon approche:
NSMutableArray *values = [[NSMutableArray alloc] initWithCapacity:3];
if (self.nameSwitch.isOn)
[values addObject:[NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Name", @"Name label"), textFieldName.text]];
if (self.telephoneSwitch.isOn)
[values addObject:[NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Telephone", @"Telephone number label"), textFieldTelephone.text]];
if (self.emailSwitch.isOn)
[values addObject:[NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Email", @"Email address label"), textFieldEmail.text]];
return [values componentsJoinedByString:@"\r"];
J'ai quelques questions:
- Est-ce une approche correcte (je suis un Noob objective-c)?
- Je me rends compte que mon tableau est autoeleased, mais je suis toujours préoccupé par l'utilisation de la mémoire. devrais-je libérer le pool de libérations automatiques? semble un peu dangereux. Je souhaite rendre le code un peu plus dynamique. ma pensée initiale est de créer un tableau de variables de sortie, puis utiliser la balise UISwitch pour stocker la clé qui conduit la localisation. pensées?
Merci pour votre temps,
Craig Buchanan
Je suppose que les variables locales d'autorelease sont automatiquement affectées à un pool de libération automatique créé localement, correct? Est-ce que vous vous trouvez en utilisant cela fréquemment? Si je comprends votre dernière suggestion, j'aurais une variable NSIndexSet au niveau de l'instance qui serait modifiée sur la méthode IBAction qui est assignée aux UISwitches? Cette variable serait utilisée dans une boucle for par la méthode qui crée la chaîne dynamique pour piloter le processus de localisation. Vrai? Merci. – craig
La réponse est "oui" à tout ce que vous avez dit, sauf que je n'utilise pas fréquemment les pools d'autorelease locaux, car j'utilise généralement le pattern alloc/init dans des boucles serrées. –