1. As the rule in cocos2d-x, static function `create` should return an autorelease object.
2. Why not save std::function as member variable of AssetsManager instead of creating a temple class `DelegateProtocolImpl `?