2010-11-19 5 views
1

Objective C öğrenirken, bende @property ve @synthesize'nin nasıl çalıştığına alıştım. Bu teknik, lütfen neden kullanıldığıiPhone sythesizing

//new way 
@synthesize world=world_; 

birisi açıklayabilir misiniz:

//usual way 
@synthesize world; 

Ama son zamanlarda ben uygulamalara rastlamak ettik böyle @synthesize olduğu idi?

sayesinde

Mark

cevap

2

Bu gerçek ivar adı ve mülkiyet adı arasındaki karışıklığı önlemek için kullanılır inanıyoruz. böylece

@interface MyClass : NSObject 
{ 
    NSObject *_myObjActualIVar; 
} 
@property (retain) NSObject *myObjProperty; 

@end 

@implementation MyClass 
@synthesize myObjProperty = _myObjActualIVar; 

- (void) someMethod: (NSObject *)someOtherObject 
{ 
    [_myObjActualIVar release]; // here I know I'm accessing the ivar 

    self.myObjProperty = someOtherObject; // here I know I'm using the setter method 

    //myObjProperty = someOtherObject; // if I accidentally try to do this 
    //self._myObjActualIVar;   // or this, the compiler will tell me 
} 

@end 

sahip olabilir ve o zaman daha zor hale getirir siz ya yanlışlıkla aslında özelliğini istediğini veya tersi ivar erişmek için bu sınıfa çalışan diğer bazı geliştirici. Farklı isimler hangisinin daha net olduğunu ortaya çıkarır. Objective-C 2 manual den

2

:

için form özellik = ivar kullanabilir, örneğin, bir belirli örneği değişken özelliği için kullanılması gerektiğini belirtir:

@synthesize firstName, lastName, age = yearsOld