ในตัวอย่างของคุณmapView1เป็นตัวแปรเช่น (Ivar), ชิ้นส่วนของหน่วยความจำที่เป็นตัวอย่างของการเรียนที่กำหนดไว้ในและexample.h เป็นชื่อของที่คุณสมบัติ คุณสมบัติเป็นคุณสมบัติของวัตถุที่สามารถอ่านหรือตั้งค่าการใช้สัญกรณ์จุดนี้: คุณสมบัติไม่จำเป็นต้องอิงจาก ivar แต่คุณสมบัติส่วนใหญ่เป็น ประกาศเพียงแค่บอกโลกว่ามีคุณสมบัติที่เรียกว่าexample.mmapViewmyObject.mapView@propertymapView
@synthesize mapView = mapView1;
บรรทัดนี้จะบอกคอมไพเลอร์เพื่อสร้างหมาและทะเยอทะยานสำหรับmapViewและที่พวกเขาควรจะใช้ Ivar mapView1ที่เรียกว่า โดยไม่ต้อง= mapView1มีส่วนร่วมคอมไพเลอร์จะคิดว่าทรัพย์สินและ Ivar มีชื่อเดียวกัน (ในกรณีนี้นั่นจะทำให้เกิดข้อผิดพลาดของคอมไพเลอร์เนื่องจากไม่มี ivar ที่เรียกว่าmapView)
ผลลัพธ์ของ@synthesizeข้อความนี้คล้ายกับว่าคุณได้เพิ่มรหัสนี้ด้วยตัวเอง:
-(MKMapView *)mapView
{
return mapView1;
}
-(void)setMapView:(MKMapView *)newMapView
{
if (newMapView != mapView1)
{
[mapView1 release];
mapView1 = [newMapView retain];
}
}
หากคุณเพิ่มรหัสนั้นในชั้นเรียนด้วยตัวเองคุณสามารถแทนที่@synthesizeคำสั่งด้วย
@dynamic mapView;
สิ่งสำคัญคือการมีความแตกต่างทางแนวคิดที่ชัดเจนระหว่างไอวอรี่และคุณสมบัติ พวกเขาเป็นแนวคิดที่แตกต่างกันสองอย่างจริงๆ