2012-08-25 4 views
0

Récemment, j'ai commencé à apprendre Objective-C, et je suis intrigué par le membre var et la propriété. Je veux savoir quelle est la différence entre les trois blocs de code suivants:objectif-c membre var et l'utilisation de déclaration de propriété

1.

@interface Application 
{ 
    UserInfo* userInfo; 

    ApplicationInfo*applicationInfo; 
} 

@property (retain) UserInfo*userInfo; // @synthesize userInfo; 

@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo; 

@end 

2.

@interface Application 

{ 
} 

@property (retain) UserInfo*userInfo; // @synthesize userInfo; 

@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo; 

@end 

3.

@interface Application 
{ 
    UserInfo* userInfo; 

    ApplicationInfo*applicationInfo; 
} 

@end 

Merci beaucoup!

Répondre

0

1: Ceci déclare les variables d'instance accompagnées de propriétés déclarées. Lorsque vous synthétisez les propriétés, par exemple la propriété foo, les méthodes foo et setFoo sont automatiquement générées en se référant aux variables d'instance (du fait qu'elles portent le même nom), et elles sont appelées lorsque vous utilisez la notation par points (par exemple someInstance.foo = bar) pour accéder leur. Étant donné que vous avez défini les propriétés comme retain, lorsque vous affectez un objet à la propriété à l'aide de la notation setter ou dot, l'objet existant pointé par la variable d'instance est libéré et le nouvel objet est affecté à la variable d'instance et conservé.

2: Exactement le même que 1. Les variables d'instance sont implicites. 3: Les variables d'instance sont là, mais les propriétés ne le sont pas, donc vous ne pourrez pas y accéder par notation par points et aucune méthode getter/setter n'est synthétisée.

Je vous recommande vivement de lire la documentation officielle à ce sujet, c'est assez clair et explique tout de manière assez simple.

+0

Merci beaucoup @Jim – Bohan

Questions connexes