นี่คือข้อมูลที่ฉันรู้เกี่ยวกับคุณสมบัติตัวแปร
- อะตอม // ค่าเริ่มต้น
- ไม่ใช่อะตอม
- strong = คงไว้ // ค่าเริ่มต้น
- อ่อนแอ
- รักษา
- กำหนด // ค่าเริ่มต้น
- unsafe_unretained
- สำเนา
- อ่านเท่านั้น
- readwrite // ค่าเริ่มต้น
ด้านล่างนี้เป็นลิงค์บทความโดยละเอียดที่คุณสามารถค้นหาคุณลักษณะทั้งหมดที่กล่าวถึงข้างต้นซึ่งจะช่วยคุณได้ ขอบคุณทุกคนที่ให้คำตอบที่ดีที่สุดที่นี่ !!
คุณสมบัติตัวแปรคุณสมบัติหรือตัวปรับแต่งใน iOS
01. strong (iOS4 = คงไว้)
- มันบอกว่า "เก็บสิ่งนี้ไว้ในกองจนกว่าฉันจะไม่ชี้ไปที่มันอีกต่อไป" - หรืออีกนัยหนึ่งคือ "ฉันเป็นเจ้าของคุณไม่สามารถยกเลิกการจัดสรรสิ่งนี้ก่อนที่จะตั้งเป้าหมายให้ดีด้วยสิ่งนั้นเหมือนกับที่เก็บไว้ "- คุณใช้แรงก็ต่อเมื่อคุณต้องการเก็บวัตถุ - โดยค่าเริ่มต้นตัวแปรอินสแตนซ์และตัวแปรท้องถิ่นทั้งหมดเป็นตัวชี้ที่ชัดเจน - โดยทั่วไปแล้วเราใช้ที่แข็งแกร่งสำหรับ UIViewControllers (ผู้ปกครองของรายการ UI) - Strong ใช้กับ ARC และโดยพื้นฐานแล้วจะช่วยคุณได้โดยไม่ต้องกังวลกับจำนวนการคงไว้ของวัตถุ ARC จะเผยแพร่ให้คุณโดยอัตโนมัติเมื่อคุณทำเสร็จแล้วการใช้คีย์เวิร์ดที่แข็งแกร่งหมายความว่าคุณเป็นเจ้าของออบเจ็กต์
ตัวอย่าง:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
02. อ่อนแอ (iOS4 = unsafe_unretained)
- มีข้อความว่า "เก็บสิ่งนี้ไว้ตราบเท่าที่มีคนอื่นชี้ให้เห็นอย่างชัดเจน" - เช่นเดียวกับการมอบหมายไม่มีการเก็บรักษาหรือการปล่อย - การอ้างอิง "อ่อนแอ" คือการอ้างอิงที่คุณไม่ได้เก็บรักษาไว้ - โดยทั่วไปเราใช้จุดอ่อนสำหรับ IBOutlets (UIViewController's Childs) สิ่งนี้ได้ผลเนื่องจากวัตถุลูกจำเป็นต้องมีอยู่ตราบเท่าที่ออบเจ็กต์หลักทำเท่านั้น - การอ้างอิงที่อ่อนแอคือการอ้างอิงที่ไม่ปกป้องวัตถุที่อ้างอิงจากการรวบรวมโดยผู้รวบรวมขยะ - โดยพื้นฐานแล้วจุดอ่อนคือการมอบหมายทรัพย์สินที่ไม่ได้คืน ยกเว้นเมื่อวัตถุถูกยกเลิกการจัดสรรตัวชี้ที่อ่อนแอจะถูกตั้งค่าเป็นศูนย์โดยอัตโนมัติ
ตัวอย่าง:
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
อธิบาย : ขอบคุณ BJ Homer
ลองนึกภาพวัตถุของเราคือสุนัขและสุนัขต้องการที่จะวิ่งหนี (ถูกจัดสรรทิ้ง) ตัวชี้ที่แข็งแกร่งก็เหมือนสายจูงสุนัข ตราบใดที่คุณมีสายจูงติดกับสุนัขสุนัขจะไม่วิ่งหนี หากมีคนห้าคนผูกสายจูงไว้กับสุนัขหนึ่งตัว (ตัวชี้ที่แข็งแกร่งห้าตัวต่อวัตถุชิ้นเดียว) สุนัขจะไม่วิ่งหนีจนกว่าสายจูงทั้งห้าจะหลุดออก ในทางกลับกันตัวชี้ที่อ่อนแอก็เหมือนกับเด็กตัวเล็ก ๆ ที่ชี้ไปที่สุนัขและพูดว่า "ดูสิสุนัข!" ตราบใดที่สุนัขยังอยู่ในสายจูงเด็ก ๆ ยังสามารถมองเห็นสุนัขได้และพวกเขาก็ยังชี้ไปที่มัน ทันทีที่สายจูงทั้งหมดหลุดออกสุนัขจะวิ่งหนีไม่ว่าเด็ก ๆ จะชี้ไปที่มันกี่ตัวก็ตาม ทันทีที่ตัวชี้ที่แข็งแกร่งตัวสุดท้าย (สายจูง) ไม่ชี้ไปที่วัตถุอีกต่อไปวัตถุนั้นจะถูกจัดสรรและตัวชี้ที่อ่อนแอทั้งหมดจะถูกทำให้เป็นศูนย์ เมื่อเราใช้อ่อนแอ? ครั้งเดียวที่คุณต้องการใช้จุดอ่อนคือถ้าคุณต้องการหลีกเลี่ยงวัฏจักรการรักษา (เช่นผู้ปกครองรักษาเด็กและเด็กยังคงรักษาผู้ปกครองไว้ไม่ให้ปล่อยออกมา)