我有一种情况,部队可以攻击建筑物。每个部队都有一个指向其目标的指针。
@property (nonatomic, weak) Building *target;
在更新循环中,部队会定期对其目标造成伤害。
if (_target)
{
if (/*enough time has passed since last attack, attack again*/)
{
[_target attack];
if (_target.health <= 0)
{
[_target removeFromParentAndCleanup:YES]; //Cocos2d
_target = nil;
}
}
}
else /* Find new target */
问题是:
troop1
处理掉下building1
来并继续前进的打击building2
troop2
正在攻击building1
,但要等到它的下一次攻击才能确定building1
是现在nil
。
我意识到问题在于troop2
' 的指针尚未设置为 nil,而是我应该检查指针的值是否为 nil。
我尝试使用if (*_target)
但收到消息
语句需要标量类型的表达式
如果有办法在 Objective-C 中实现这种比较?还有哪些其他选项可用于确定值何时发生变化?KVO?一些广泛的委托模式?