野指针调用问题

第二次出现此问题 第一次是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来对其进行赋值!!!

你可能感兴趣的:(野指针调用问题)