อะไรคือความแตกต่างระหว่างสิ่งนี้:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
และนี่:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
ฉันต้องการใช้คุณสมบัติสำหรับผู้รับมอบสิทธิ์
อะไรคือความแตกต่างระหว่างสิ่งนี้:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
และนี่:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
ฉันต้องการใช้คุณสมบัติสำหรับผู้รับมอบสิทธิ์
คำตอบ:
ความแตกต่างเพียงอย่างเดียวระหว่างweak
และassign
ก็คือหากวัตถุที่weak
ชี้ไปยังถูกจัดสรรค่าของweak
ตัวชี้จะถูกตั้งค่าเป็นnil
เพื่อที่คุณจะไม่เสี่ยงต่อการเข้าถึงขยะ หากคุณใช้assign
สิ่งนั้นจะไม่เกิดขึ้นดังนั้นหากวัตถุถูกยกเลิกการจัดสรรจากภายใต้คุณและคุณพยายามเข้าถึงคุณจะเข้าถึงขยะ
สำหรับวัตถุ Objective-C หากคุณอยู่ในสภาพแวดล้อมที่คุณสามารถใช้ได้weak
คุณควรใช้มัน
UITableView
มีassign
สำหรับผู้แทนด้วย:@property (nonatomic, assign) id <UITableViewDelegate> delegate;