use runtime to preserve the delegate

use runtime to preserve the delegate