我有一个简单的方法来检查视图的superview,并返回一个BOOL。然而,间歇性地,该方法无法产生正确的答案(或者至少是我ʻ期望的答案)。
方法是:
-(BOOL) isTheViewShowing
{
return (BOOL) [theView superview];
}有一个删除视图的Tap手势,我记录了以下内容(当不希望发生的情况发生时):
isTheViewShowing: NO
theView: <UIView: 0x3c1a10; frame = (0 232; 320 135); clipsToBounds = YES; layer = <CALayer: 0x365480>>,
superView: <UIView: 0x392400; frame = (0 0; 320 367); autoresize = W+H; layer = <CALayer: 0x35fe90>>正如日志所示,superView是存在的,但是为什么强制转换失败呢?
发布于 2012-09-24 09:01:35
superView:
请注意,superview的低位字节为0x00。我还没有真正研究过当你试图将指针转换为一个BOOL时会发生什么,但是由于BOOL本质上是一个char,如果编译器只查看低位字节,我一点也不会感到惊讶。试着这样做:
-(BOOL) isTheViewShowing
{
return ([theView superview] != nil);
}这在两个方面更好: 1)它实际上是有效的,2)它更好地传达了你想要做的事情。
https://stackoverflow.com/questions/12557594
复制相似问题