【发布时间】:2019-07-07 09:50:53
【问题描述】:
我刚刚遇到了一个问题。我使用 NSMutableArray 来保留需要加载的广告 ID。当一个 id 被预加载时,我将它从数组中删除。然后我发现,删除后,单位id变成了僵尸。
我试图重现这一点,我发现当从数组中提取广告 id 时,它不是僵尸。它只是从数组中删除后变成了僵尸。但是,还有一个 NSString* 引用它,怎么会这样呢?而如果它此时会变成僵尸,那么它应该每次都变成僵尸。但它只是偶尔发生。
-(void)preloadNextRewardVideo
{
if([_allRewardVideoAds count])
{
NSString* adsName = [_allRewardVideoAds objectAtIndex:0]; //the element is not a zombie here
GADRewardBasedVideoAd* ads = [self ensureRewardVideo:adsName];
if(![ads isReady])
{
_currentRewardVideoName = adsName;
[_allRewardVideoAds removeObjectAtIndex:0];
GADRequest *request = [GADRequest request];
[ads loadRequest:request withAdUnitID:adsName]; //here, adsName is a zombie
_isRewarLoading = YES;
}
}
}
【问题讨论】:
-
你有 ARC 吗?
-
@bbum 不,我没有开启 ARC。
标签: objective-c automatic-ref-counting nszombie