第二次出现此问题 第一次是Unity时,
我们一定要注意 在某个方法中 调用一个回调或者一个函数时,参数是指针类型,那么一定不要传入一个在该函数中直接声明的指针!!!
- (void)SuccessToLoad:(ExpressAd *)ExpressAd views:(NSArray<__kindof AdView *> *)views
{
NSLog(@"%s",__FUNCTION__);
self.AdViews = [NSMutableArray arrayWithArray:views];
id viewArray = views;
void *p = (__bridge void *)self.AdViews;
self.onSuccessToLoad(self.context, p, [self.AdViews count]);
}
注意上面的一句
void *p = (__bridge void *)self.AdViews;
如果使用viewArray 对 p进行赋值的话
那么他的生命周期就只是在这个函数中! 出了函数作用域就会被释放!
所以得用一个全局存在的属性self.AdViews来对其进行赋值!!!
网友评论