存放委托对象的属性(delegate)要用weak定义,因为可能委托的对象也持有本对象.二者之间必须为"非拥有关系".避免保留环造成内存泄露.
根据需求可以选择用weak或unsafe_unretained来定义delegate.
委托方法即可以传递参数给委托对象,也能获取委托对象的返回值.
委托协议一般用可选的(optional)标注,在调用委托方法前,必须先确定委托对象是否能响应该选择器.查询方法为"respondsToSelector:".
如果需要频繁的调用委托方法,可以新增结构体,放入对应委托方法大小为1的位段,在delegate的set方法里用"respondsToSelector:"方法判断结果并保存在结构体.这样每次调用委托方法时,直接查询结构体的标志就可以了.