change id<CAlertDelegate> delegate to weak reference