ในตัวอย่างของคุณmapView1
เป็นตัวแปรเช่น (Ivar), ชิ้นส่วนของหน่วยความจำที่เป็นตัวอย่างของการเรียนที่กำหนดไว้ในและexample.h
เป็นชื่อของที่คุณสมบัติ คุณสมบัติเป็นคุณสมบัติของวัตถุที่สามารถอ่านหรือตั้งค่าการใช้สัญกรณ์จุดนี้: คุณสมบัติไม่จำเป็นต้องอิงจาก ivar แต่คุณสมบัติส่วนใหญ่เป็น ประกาศเพียงแค่บอกโลกว่ามีคุณสมบัติที่เรียกว่าexample.m
mapView
myObject.mapView
@property
mapView
@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;
สิ่งสำคัญคือการมีความแตกต่างทางแนวคิดที่ชัดเจนระหว่างไอวอรี่และคุณสมบัติ พวกเขาเป็นแนวคิดที่แตกต่างกันสองอย่างจริงๆ