- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一条控制台消息,该消息似乎是由明显不相关的事件触发的。
该消息指出:
snarfed from ivar layout: [propertyName] = [constantString]
其中[propertyName]
是我设置字符串常量[constantString]
值的属性的名称。
是什么原因导致此消息以及它的含义是什么?
最佳答案
我最近也遇到了这个问题。我能够解决我的具体问题,但我不认为这正是提问者遇到的问题,因为我的问题仅在 VoiceOver 模式下暴露。因此,我将就我认为普遍发生的事情提出想法,然后谈谈我的具体问题。
至于一般问题,我认为 Apple 框架决定查看特定类的所有 ivars,以便提取一些它想要的信息,但 UI 元素的其他部分没有提供这些信息。这对我来说似乎有点奇怪,但这就是我遇到的情况。
因此,继续一般情况,并回答最初的问题。如果您像我一样,那么您的属性名称可能与您的 ivar 相同。尝试为该属性显式定义一个 getter 方法。然后,如果您要返回非零值,请在该 getter 内设置一个断点。查看堆栈跟踪,它应该告诉您苹果框架的哪一部分决定循环遍历您的 ivar 布局以获得它想要的信息。 (如果您的属性和 ivar 没有使用相同的名称,则只需使用 ivar 名称定义一个属性和 getter,并对断点执行相同的操作。)
我的具体案例是自定义表格单元(就像其中一位评论者一样)。在那个牢房里,我有一个与其 ivar 同名的属性。我还为该属性明确定义了 getter。我还引用了 Nib 文件中的自定义表格单元格。所以,它看起来像这样:
class CustomTableViewCell:UITableViewCell
{
NSString *s ;
}
@property(nonatomic,retain) NSString *s ;
并在实现中:
@synthesize s ;
-(NSString *)s
{
if( !s )
return self.reuseIdentifer ;
return s ;
}
我在 return self.reuseIdentifier 行中放置了一个断点,这向我显示了辅助功能函数的堆栈跟踪。堆栈跟踪显示我的方法被Apple内部方法调用,该方法循环遍历我的所有ivars,寻找可用作我的表格单元格的accessibilityLabel的东西。选择器的名称是“_accessibilityRetrieveTableViewIvarsText”。
更糟糕的是,就我而言,这不仅仅是一个调试器问题,它还因为使用了错误的可访问性标签而弄乱了我的辅助功能界面。
我针对我的具体问题提出了 3 个修复方案:
1) 我为 Nib 内的表格单元格的accessibilityLabel 添加了一个值。这满足了 Apple 框架的要求,它不会搜索我的 ivars。然而,这不是我采用的解决方案,因为我不想要静态辅助功能标签。
2) 我使用空的实现和接口(interface)对 CustomTableViewCell 进行了子类化,并将其用作 Nib 内的表单元格类。这解决了问题,因为 Apple 框架循环遍历该类的 ivars,但其中没有 ivars,并且没有任何“snarf”值。我也没有使用该解决方案,但它可能是最好的解决方案,因为它可以防止 Apple 的框架检查我的 ivars。
3) 我决定的解决方案是将我的 ivar 设为私有(private)并使用不同的名称定义该属性。这似乎是很多人使用属性的标准方式。它看起来像这样:
class CustomTableViewCell:UITableViewCell
{
@private
NSString *_s ;
}
@property(nonatomic,retain) NSString *s ;
并在实现中:
@synthesize s = _s ;
-(NSString *)s
{
if( !_s )
return self.reuseIdentifer ;
return _s ;
}
这解决了问题,因为当 Apple 检查 ivar 时返回 nil,因此没有任何内容被“捕获”。我仍然不确定这个还是 #2 更合适。
关于iphone - 控制台消息 : "snarfed from ivar layout..."? 的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113695/
我不确定是否理解好几个 Android /res/layout 文件夹所起的作用。 layout:一般布局 layout-port:必须更改为纵向的小部件布局 layout-land:小部件的布局,必
我在 Qt 4.7 中有一个界面,但我很难按照自己的意愿行事。 所需行为的基本描述:用户在组合框中进行选择,这会导致查询转到另一个函数,该函数返回一个 QHBoxLayout 对象,该对象通常包括多个
我在 res 文件夹中创建了 layout-large、layout-normal 和 layout-xlarge 并且我将所有 xml 文件复制到那些布局文件夹中 首先,我想问一下 layout(d
如图所示。我想在布局上方显示星图。我是这种编码的新手。 我的查询是1)是否可以在我的布局端显示星标(图像)? 2) 如果每次点击我的 Activity 时我都想显示星标并显示第二张图片,这可能吗?意味
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 上个月关闭。 Improve this questio
我正在使用 android studio 中的 Material 设计为 pre lollipop 设备创建一个 android 应用程序,我是 android studio 的新手我正在我的项目中创
我对 Android 布局设计感到困惑。我想实现下图中的布局: 但是下面的代码产生了类似这张图片的东西: 我的代码
如果我有: Some Element.... Other Element
我有一个单元格(称为A),它在更高层次的单元格(称为P)中使用一次。当我将 A 放在 P 中时,它的边框比 A 的实际内容大得多。当我下降到 A 并进行缩放时,它被缩小了,表明边缘存在一些东西。 我可
我有一个“auth-redirect”模块,位于所有页面布局文件(1column、2column 等)的开头。这可以确保在渲染任何页面之前,如果用户未经过正确身份验证,则会重定向到登录页面。 我允许呈
我的app只支持landscape模式(这是业务需求)。 我在 layout-land 文件夹中有一个布局 xml 文件,但我没有费心创建一个 layout 文件夹,因为我在 Android list
我正在尝试为我的 Android 应用程序创建启动屏幕,如链接 http://developer.xamarin.com/guides/android/user_interface/creating_
我目前正在开发一个应用程序,我正在使用 swdp为了创建对多个屏幕的支持。 我添加了 sw400dp文件夹,根据 Android Studio 的 XML 渲染器,它基本上包含所有较小的手机。 这意味
Android 在“layout-normal”和“layout”文件夹中处理布局的方式有什么不同吗?如果我有一个被认为布局很小的设备,如果只有这两个选项,它会查看哪个文件夹? 最佳答案 是的,在您给
我已经看到了在单个页面上创建多个强制布局的解决方案,其中每个布局都包含在其自己的SVG中。但是,我一直无法找到有关如何在单个SVG中包括多个力布局的帮助。每个布局都有自己的数据与之关联。 可以在htt
我听说 Constraint-Layout 中的指南和 RTL 存在一些错误。但是这些方法都没有帮助我。我的BottomNavigation 的两边都有指南,一切都在LTR 中工作,但在RTL 中,其
我有以下渲染函数: render() { return ( Header
我知道如何使用以下文件夹,但例如我不知道 layout-small 和 layout-sw320dp 有什么区别? 此外,建议我哪些文件夹对优化很重要。我不喜欢我的程序被用户视为不规则。我希望得到您的
layout-latest.js ui-layout-west 面板 west: { paneSelector: ".ui-layout-west"
我是 Android 开发的新手,对我来说,了解图形布局和 xml 如何相互关联的一个好方法是尝试 xml 属性并查看图形 UI 中的变化。有没有一种方法可以同时并排查看,而不必从一个切换到另一个?图
我是一名优秀的程序员,十分优秀!