问题标签 [wait-fences]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1277 浏览

iphone - wait_fences:未能收到回复:10004003(再次)

关于这个警告的另一个呼救声。

首先,我已经查看了其他地方的所有问题,但似乎没有一个适合我的情况。它与警报框和辞去第一响应者无关,也与在显示视图之前执行任何动画无关。实例化基于 UIView 的自定义键盘时会出现我的问题。

其次,我相信我可以让警告随意出现/消失。我只是很困惑为什么,所以我更多的是寻找解释而不是解决方案。

这里要发布的代码太多了,所以我将简要介绍一下正在发生的事情:

ViewController "Calc" 在 VC 的 loadView 方法中实例化一个基于 UIView 的自定义 "DataView",然后将其添加为 VC 的子视图。

“DataView”在 DataView 的 init 方法中实例化一个基于自定义 UITextField 的“TextFieldKPD”

“TextField”在 TextField 的 init 方法中实例化了一个基于 UIView 的自定义“KeyPad”,并将该 KeyPad 分配给 TextField 的 inputView。

“KeyPad”创建了 13 个 UIButtonTypeCustom 类型的 UIButton,读取并为每个按钮分配“按下”和“未按下”图像,以及设置按钮的操作。然后它将每个按钮添加为其自身的子视图。(通过控制在 KeyPad 的 UIView 生命周期中何时发生这种构造,我可以影响 wait_fences 警告:见下文。)

“Calc”视图控制器是最初呈现给用户的视图控制器。我已经追踪到在 Calc 的 viewDidLayoutSubViews 方法结束之后和调用其 viewDidAppear 方法之前发生的 wait_fences 警告。请注意,显示 Calc 时,KeyPad 不可见。

我似乎能够通过更改键盘的构造方式来控制 wait_fences 警告的操作:

  • 如果 UIButtons 被实例化并作为子视图添加到 KeyPad 的 init 方法中,那么我将收到警告,只有一次。

  • 相反,如果按钮被实例化并添加到 KeyPad 的 layoutSubViews 方法中,则不会出现警告。(但在我点击 TextField 之前,KeyPad 并没有有效地构建 - 仍然没有 wait_fences 警告)

Calc 的 loadView 中没有动画或任何内容。它一直实例化并分配。

那么对这个版本的wait_fences有什么意见吗?

编辑 1,1 月 30 日 - 现在更加混乱!

今天早上我很无聊,所以我决定玩一下我的代码,看看我是否可以更好地隔离警告的生成。我将其范围缩小到以下完全无用的代码,现在我可以使用这些代码触发警告:

如果我[self loadImages]在 init 方法中执行,KeyPad则会出现警告。但是这个代码什么都不做,因为文件不存在。我相信如果循环计数器足够小以至于警告确实消失了,但我没有限定下限。

如果我将图像的实际加载替换为

[UIImage imageWithContentsOfFile:@"StupidFileNameThatDoesNotExist"]

并且在初始化期间仍然调用该方法KeyPad,那么我似乎没有收到警告。这两种加载图像的方式之间的一个明显区别是imageNamed在内部缓存图像。

所以我倾向于乔治的回答,这是一个内部的苹果搞砸了。

编辑 2,2 月 1 日 - 这是吉姆的警告,但不是我们所知道的

所以我说服自己,显然是 UIImage 类中的缓存导致了这个问题。该怎么办?好吧,当然是写我自己的图像缓存!!

所以我开始停止工作,撕掉那些试图加载无效图像的代码,并得到我生成所需文件名并将它们传递给我的缓存控制器的点。因此,为了验证事情是否开始融合在一起,在缓存控制器中,我为每次缓存图像的尝试生成了一条 NSLog 消息 - 仅此而已 - 只需记录文件名。

你猜怎么着——我又收到了愚蠢的警告。因为根本没有做任何实际工作。

我只能得出结论,当我将额外的代码塞进KeyPad. 而且我无能为力来减轻它。我所能做的就是希望这个警告是良性的。

编辑 3,《哈姆雷特》第 1 场第 4 场:丹麦的某些东西很烂

保持与编辑 2 中相同的代码,我注释掉了 NSLog 语句。警告消失了。我把它放回去,警告出现了。

所以我的代码是:

和:

使用该 NSLog 语句控制警告的出现。

编辑 4,2 月 2 日 - 欢迎来到末日神殿

考虑到艾伦的评论,我将我的键盘重新构建为 XIB 并加载它,而不是手动尝试构建视图。当然,这并没有解决任何问题。我曾希望笔尖加载会发生在导致问题的原因之外。

我的直觉是,我正在与 Calc 的 loadView 和一些内部 iOS 活动中的竞争条件发生冲突。如果我在 loadView 中做太多工作,那么我会越界并触发 wait_fences 警告。而且键盘是一种症状,而不是根本原因。IE 它可能是任何活动,只是键盘工作是我在警告开始出现之前所做的最后一件事。我只是希望我真的知道我实际上正在穿越的限制是什么,而不是在黑暗中跌跌撞撞。

0 投票
1 回答
971 浏览

ios - 使用基于 AVCapture 的 viewController 崩溃

我正在开发一个在 UIViewController 内使用 OpenGL VideoCapture 的应用程序

在此控制器的第一次初始化中,我在控制台中收到此消息:

该消息在 viewController 初始化后立即显示

之后,如果我切换到另一个控制器并再次启动此控制器,则会在使用 EXC_BAD_ACCESS 启动 ViewController 2/4 后发生崩溃

asm 输出没有太大帮助

源代码的一些相关部分:

有什么建议可以跟踪这次崩溃吗?

0 投票
0 回答
300 浏览

ios - wait_fences:未能收到回复:10004003 和选项卡中的导航控制器

我玩得很开心

iPad 应用程序上的控制台消息。我徒劳地搜索了 Stack Overflow 的解决方案,但大多数答案似乎都在谈论文本字段等。

我的应用程序有四个选项卡。每个选项卡中都有一个导航控制器。启动时,每个选项卡都有一个显示网格的视图。(René Sprotte 的 MMGridView)。当您单击网格时,它会以通常的方式通过压入堆栈来显示一个新网格:

我的问题:在特定选项卡的第一个视图上,我可以整夜旋转,并且视图旋转得很好。但是,一旦我将另一个推入堆栈,旋转时就会出现可怕的 wait_fences 控制台错误。并且有一个很大的停顿。然后它旋转。如果我对同一个网格多做几次,我可能会导致它崩溃。

显然我遗漏了一些明显的东西。是什么赋予了?我怎样才能解决这个问题?

0 投票
2 回答
709 浏览

ios - UIAlertView、NSURLConnection 和 wait_fences

在用户在模态视图控制器中按下“登录”后,我试图显示一个UIAlertViewwith 。UIActivityIndicator要登录,凭据将发送到使用类的sendAsynchronousRequest:queue:completionHandler:服务器NSURLConnection。我的实现如下:

如果无法访问服务器或服务器速度很慢,这似乎可以正常工作,但如果服务器立即回复,则微调器似乎在控制台日志记录后 3-5 秒后才被关闭

我认为发生这种情况是因为我正在关闭模式视图控制器(登录屏幕),而UIAlertView它仍在显示,但我不确定为什么会发生这种情况,因为它通常应该被关闭。我做错了什么,正确的做法是什么?

0 投票
2 回答
214 浏览

ios - 如何调试 wait_fences 错误

wait_fences:未能收到回复:10004003

我继续收到此错误。它发生在我的应用程序启动时。我将如何调试这个问题。有什么方法可以让我观察 wait_fences,看看那里发生了什么。有什么方法可以查看哪些线程阻塞了什么?

感觉这个错误只不过是一个没有工具或信息进入或离开虚空的黑洞。

任何有调试此错误提示的人将不胜感激。

新的

我现在改变了我的线程,所有线程调用都通过这个方法集来完成所有的调度

注意:我也希望你们不要仅仅因为看到另一个关于这个问题的问题就投票结束我的问题。没有关于此错误的真实信息。我需要知道是什么导致了这个错误和/或如何调试它。不是常见的“将超级调用添加到您的 viewDidAppear 等。如果这些有帮助,我不会问这个问题。