fix warinng use self in block , just use weak