ฉันท่องผ่านบล็อกที่ยอดเยี่ยมซึ่งดูแลโดย Scott Stevenson และฉันพยายามเข้าใจแนวคิดพื้นฐานของ Objective-C ในการมอบหมายผู้มอบหมาย 'มอบหมาย' คุณสมบัติ 'เทียบกับ' รักษา ' หมายเหตุทั้งคู่เหมือนกันในสภาพแวดล้อมที่เก็บขยะ ฉันส่วนใหญ่เกี่ยวข้องกับสภาพแวดล้อมที่ไม่ใช่ GC (เช่น: iPhone)
โดยตรงจากบล็อกของสกอตต์:
"คีย์เวิร์ด assign จะสร้าง setter ซึ่งกำหนดค่าให้กับตัวแปรอินสแตนซ์โดยตรงแทนที่จะคัดลอกหรือเก็บไว้ซึ่งจะดีที่สุดสำหรับประเภทดั้งเดิมเช่น NSInteger และ CGFloat หรือวัตถุที่คุณไม่ได้เป็นเจ้าของโดยตรงเช่น"
หมายความว่าคุณไม่ได้เป็นเจ้าของวัตถุผู้รับมอบสิทธิ์โดยตรง ฉันมักจะรักษาผู้ได้รับมอบหมายของฉันเพราะถ้าฉันไม่ต้องการให้พวกเขาออกไปสู่ห้วงลึก ฉันมักจะนามธรรม UITableViewController ห่างจากแหล่งข้อมูลที่เกี่ยวข้องและผู้ได้รับมอบหมายด้วย ฉันยังคงวัตถุเฉพาะนั้นไว้ ฉันต้องการให้แน่ใจว่ามันจะไม่หายไปดังนั้น UITableView ของฉันจะมีตัวแทนอยู่รอบ ๆ เสมอ
บางคนสามารถอธิบายเพิ่มเติมว่าที่ไหน / ทำไมฉันจึงผิดฉันจึงสามารถเข้าใจกระบวนทัศน์ทั่วไปนี้ในการเขียนโปรแกรม Objective-C 2.0 ของการใช้คุณสมบัติมอบหมายให้กับผู้ได้รับมอบหมายแทนที่จะเก็บไว้?
ขอบคุณ!