增加delegate、data、option；修改代码逻辑