【发布时间】:2012-12-18 03:47:00
【问题描述】:
我找到了一个演示 sn-ps,它使用了这样的类型转换:(int)view.'view' 是 UIView 对象的指针。我从来不知道它可以用来转换类型。有人可以帮我解释一下吗? 在此处粘贴代码
- (CGPoint)accelerationForView:(UIView *)view
{
// return
CGPoint accelecration;
// get acceleration
NSValue *pointValue = [self._accelerationsOfSubViews objectForKey:
[NSNumber numberWithInteger:(int)view]];
if (pointValue == nil) {
accelecration = CGPointZero;
}
else {
[pointValue getValue:&accelecration];
}
return accelecration;
}
- (void)willRemoveSubview:(UIView *)subview
{
[self._accelerationsOfSubViews removeObjectForKey:
[NSNumber numberWithInt:(int)subview]];
}
【问题讨论】:
-
这些演示 sn-ps 在哪里?
-
你必须发布代码。
-
您需要在此处显示实际的 sn-p(s) 以供检查。从表面上看,这样做没有充分的理由(甚至没有很多不好的理由)。
-
@BenZotto:
sizeof(int)不能保证等于sizeof(id),所以就是这样。事实上,在 64 位 Mac 上,它明确不是。 -
他们显然使用视图的地址作为键。不稳定,在给定 64 位地址的情况下不一定可靠,但在技术上是合法的。
标签: objective-c ios casting uikit