野指针调用问题

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。