आपके उदाहरण में, mapView1
एक उदाहरण चर (ivar), मेमोरी स्टोरेज का एक टुकड़ा है जो कि परिभाषित वर्ग के एक उदाहरण से संबंधित है example.h
और example.m
। mapView
एक संपत्ति का नाम है । गुण किसी ऑब्जेक्ट की विशेषता है जिसे डॉट नोटेशन का उपयोग करके पढ़ा या सेट किया जा सकता है myObject.mapView
:। एक संपत्ति नहीं है है एक इवर के आधार पर किया जाना है, लेकिन सबसे अधिक गुण हैं। @property
घोषणा बस दुनिया बताता है एक संपत्ति कहा जाता है कि वहाँ mapView
।
@synthesize mapView = mapView1;
यह लाइन कंपाइलर को एक सेटर और गेट्टर बनाने के लिए कहती है mapView
, और उन्हें आईवर नाम का उपयोग करना चाहिए mapView1
। = mapView1
भाग के बिना , संकलक यह मान लेगा कि संपत्ति और हाथी का एक ही नाम है। (इस मामले में, वह संकलक त्रुटि पैदा करेगा, क्योंकि कोई भी आइवर नहीं है mapView
।)
इस @synthesize
कथन का परिणाम इस प्रकार है कि क्या आपने यह कोड स्वयं जोड़ा है:
-(MKMapView *)mapView
{
return mapView1;
}
-(void)setMapView:(MKMapView *)newMapView
{
if (newMapView != mapView1)
{
[mapView1 release];
mapView1 = [newMapView retain];
}
}
यदि आप उस कोड को स्वयं कक्षा में जोड़ते हैं, तो आप @synthesize
स्टेटमेंट को बदल सकते हैं
@dynamic mapView;
मुख्य बात यह है कि आइवर और गुणों के बीच एक बहुत स्पष्ट वैचारिक अंतर है। वे वास्तव में दो बहुत अलग अवधारणाएं हैं।