首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIView.superView (BOOL) ==失败

UIView.superView (BOOL) ==失败
EN

Stack Overflow用户
提问于 2012-09-24 08:52:11
回答 1查看 340关注 0票数 0

我有一个简单的方法来检查视图的superview,并返回一个BOOL。然而,间歇性地,该方法无法产生正确的答案(或者至少是我ʻ期望的答案)。

方法是:

代码语言:javascript
复制
-(BOOL) isTheViewShowing
{
    return (BOOL) [theView superview];
}

有一个删除视图的Tap手势,我记录了以下内容(当不希望发生的情况发生时):

代码语言:javascript
复制
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是存在的,但是为什么强制转换失败呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-24 09:01:35

superView:

请注意,superview的低位字节为0x00。我还没有真正研究过当你试图将指针转换为一个BOOL时会发生什么,但是由于BOOL本质上是一个char,如果编译器只查看低位字节,我一点也不会感到惊讶。试着这样做:

代码语言:javascript
复制
-(BOOL) isTheViewShowing
{
    return ([theView superview] != nil);
}

这在两个方面更好: 1)它实际上是有效的,2)它更好地传达了你想要做的事情。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12557594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档