我有反对,它正在使用委托块。我正在使用ARC。
@implementation ViewController
- (void)createGame
{
_game = [[MRCircusGame alloc] init];
_game.mainView = self.view;
_game.stageObjectsDictionary = [self getStageObjectsDictionary];
[_game prepareGame];
}
- (NSMutableDictionary *)getStageObjectsDictionary
{
StrongMan *strongMan = [[StrongMan alloc] initAndCreateImageViewWithFrame:kStrongManIntroFrame inView:self.view];
strongMan.isTakingTouches = NO;
strongMan.isVisible = NO;
[tempDictionary setObject:strongMan forKey:kMRCircusStrongMan];
return tempDictionary;
}
@interface MRCircusGame
{
@property (nonatomic, strong) NSMutableDictionary *stageObjectsDictionary;
}
@implementation StrongMan
..
-(void)method
{
__weak typeof (self) weak_self = self;
self.animator.didEndAnimating = ^{
StrongMan *strongRef = weak_self;
strongRef.isAnimating = NO;
[strongRef idle];
};
}
一些问题:
如果我不使用对 self 的弱引用,Xcode 会对可能的保留周期发出一些警告。但是我看了一下仪器,即使我使用也没有检测到内存泄漏self.isAnimating = YES;
如果我不使用这个 strongRef 解决方法,有时我会得到 BAD_EXCESS 所以我认为它 weak_self 被释放了,对吗?我应该一直使用 strongRef 来防止我的应用程序崩溃吗?
当这个块执行结束时,strongRef 会被释放吗?