который указывает __weak становится nil ARC retain при назначении ARC release ARC autorelease при возвращении ARC objc_storeWeak(¶m,value) / objc_loadWeak(&value) -(id)setDelegate:(id)d { self->delegate = d; } -(id)delegate:(id)d { return self->delegate; } __weak id delegate;
objc_release(d); } -(id)delegate:(id)d { id temp = objc_loadWeak(&self->delegate); return objc_autorelease(objc_retain(temp)); } -(id)setDelegate:(id)d { objc_storeWeak(&self->delegate,d); } -(id)delegate:(id)d { return objc_loadWeak(&self->delegate); } первый этап второй этап