Jaka jest różnica między tym:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
i to:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Chcę użyć właściwości dla delegatów.
Odpowiedzi:
Jedyna różnica między weaki assignpolega na tym, że jeśli obiekt, na który weakwskazuje właściwość, zostanie zwolniony, wówczas wartość weakwskaźnika zostanie ustawiona na nil, dzięki czemu nigdy nie ryzykujesz dostępu do śmieci. Jeśli użyjesz assign, to się nie stanie, więc jeśli obiekt zostanie zwolniony spod ciebie i spróbujesz uzyskać do niego dostęp, uzyskasz dostęp do śmieci.
W przypadku obiektów Objective-C, jeśli jesteś w środowisku, w którym możesz użyć weak, powinieneś go użyć.
UITableViewma nawet assigndla swojego delegata:@property (nonatomic, assign) id <UITableViewDelegate> delegate;