Bien qu'il soit possible de di L'accès direct à des variables membres comme ça (en utilisant l'opérateur ->) n'est pas recommandé.
La méthode correcte consiste à fournir un accesseur pour obtenir/définir vos variables membres.
En Objective-C 2.0 (iPhone et OSX 10.5), vous pouvez facilement le faire en utilisant le mot-clé "property". Dans le cadre de la syntaxe de la propriété, vous pouvez également exprimer comment vous souhaitez que les objets "set" soient traités.
conservé - l'objet précédent sera libéré et le nouveau sera conservé copie - l'objet sera copié assign - l'objet sera assigné.
Ce sont les bases, je vous suggère de lire plus sur les propriétés.
La figure ci-dessous montre comment utiliser les propriétés dans votre exemple. Notez que parce que nous traitons avec un NSString, qui est une classe dérivée de NSObject, nous utilisons l'option "retain" pour nous assurer que les comptes de référence sont correctement mis à jour. La définition et la déclaration des deux chaînes ne suffisent pas à définir et à déclarer les deux chaînes.
// 1.h
@interface ViewController1 : UIViewController
{
// declare our variable
NSString* _string;
}
// declare 'string' as a property
@property (retain) NSString* string;
// 1.m
// implements the property for string
@synthesize string = _string;
// constructor for ViewController1
-(id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
if (self = [super initWithNibName: name bundle: bundle]) {
// Initialize the string here.
self.string = @"Hello World";
}
}
// 2.m
NSString* oldString = view.string;
view.string = @"New String";
salut andrew i ont suivi le code u fournissent cependant, il retourne pas d'erreur, mais la chaîne ne peut toujours pas passer de viewcontroller1 il retourne la valeur de chaîne est NULL, peut me dire quelle est la raison –
J'ai mis à jour l'exemple pour montrer l'initialisation de la chaîne dans le c onstructeur C'est toujours un bon idéal pour initialiser vos variables comme ça. –