问题标签 [dispatch-async]
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.
ios - dispatch_sync 阻塞了我的用户界面,我无法点击任何按钮
我有 2 个带有 dispatch_sync 的块,当第一个块结束时,我为用户显示窗口并开始运行第二个块。但是在第二个区块结束之前,我不会点击屏幕上的任何按钮..
看代码:
objective-c - dispatch_async 不使用块
我想使用 dispatch_async 偶尔从我的网络服务器中提取一个变化的资源(大约每 60 秒)。
我想使用 dispatch_async 但我想给它一个函数名。因为我希望该功能休眠并再次重做相同的事情。
这就是我想要做的dispatch_async(self.downloadQueue, @selector(getDataThread:));
(这不会编译)
我认为while循环不是一个好主意,所以我想知道最好的方法是什么
ios - dispatch_async 和 UIDeviceBatteryStateDidChangeNotification
我想发送一个http请求,我想检查手机是否处于充电状态。
如果我使用dispatch_async
向任何 URL 发送请求的设备不提供电池充电通知。
如果我不使用dispatch_async
相同的代码会给我电池充电通知。
无论哪种方式,应用程序都不会崩溃。这两者有什么冲突吗,请帮忙
ios - 即使在 dispatch_async 上,UILabel 也不会更新
为什么我的标签不会更新?
我也尝试过使用 performSelectorOnMainThread 无济于事。
请注意,setLabel 出现在日志中。
附加信息:
我还有另外两个功能,它们做同样的事情,但只是使用不同的文本。其他两个函数没有 dispatch_async 但它们都可以工作。此外,两个工作功能的通知是由 NSURLConnection 发送的(本文中的方法#2 )。虽然上面的非工作功能的通知是通过调用 FBRequestConnection 发送的(参见这篇文章)。
为清楚起见,我的另外两个工作功能如下:
是的,我确实尝试在我的代码中删除 dispatch_async。事实上,最初没有 dispatch_async 是因为其他两个都在工作。
ios - Objective-C后台任务UIBackgroundTaskIdentifier重复
我有一个后台任务streamer
在 30 分钟后停止,如下所示:
但问题是当用户进入后台时再次调用 bgTask,这意味着如果用户进入后台 10 次他将有 10 个后台UIBackgroundTaskIdentifier
这会导致流媒体播放不佳,并且NSLog(@"<30");
在同一秒内被多次调用。
请指教。
ios - dispatch_async(dispatch_get_main_queue(), ^{...}); 等到完成?
我的应用程序中有一个场景,我想在一个方法中执行一些耗时的任务,其中包括一些数据处理和 UI 更新。我的方法是这样的,
由于这很耗时,我想在后台线程上进行数据处理,使用,
但由于数据处理和 UI 更新都在同一个方法中,我只想在主线程中移动 UI 更新,使用,
最后我的方法看起来像这样,
这真的有效吗?这真的是一个好习惯吗?实现这一目标的最佳方法是什么?
PS 所有这三个操作都是相互关联的。
编辑:对不起,伙计们。我在上面的代码中遗漏了一行。我的实际代码如下所示。
再次,我真的为混乱道歉。
iphone - ios应用程序的dispatch_async中可以创建的最大任务数是多少
在 ios 多任务应用程序的以下场景中,可以使用 dispatch_async 创建的最大任务数是多少
我在这里有什么限制吗?任何建议,将不胜感激!提前谢谢
ios - 在 iOS 中进入后台时执行清理任务
当应用程序进入后台时,我必须执行长时间运行的清理操作。由于清理操作是一个网络事务,需要 5 秒以上,我正在使用 beginBackgroundTaskWithExpirationHandler: API,一切都运行良好。
下面我添加代码以获得更好的清晰度..
现在我面临的问题是,当我将应用程序带到前台时,我看到的是应用程序在进入后台之前的旧屏幕。并立即从旧屏幕导航到登录屏幕。
知道为什么在应用程序重新启动时它没有显示登录屏幕,即使我已经在 cleanUpDidFinish 中加载了登录 ViewController。
ios - Obj-C:dispatch_async 在没有 NSLog 的情况下崩溃
出于某种原因,我有一个 dispatch_async 线程,除非我在它前面执行了 NSLog() 方法,否则它会崩溃。该块运行从数据库中检索用户名的方法。
碰撞:
在职的:
错误
行:AsyncImageView:0x827aa00.minX == 10 + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x8281260.marker AsyncImageView:0x827aa00.minY == 27.5 + -1*0x827b910.marker + -1*0x82812a0。标记 + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + -0.5*AsyncImageView:0x827aa00.Height Regular_Cell:0x827a400.Height == 56 + 1*0x82823f0.marker Regular_Cell:0x827a400.Width == 320 + 1*0x82218 Regular_Cell:0x827a400.minX == 0 + 1*0x8281740.marker + -0.5*0x8281ee0.marker Regular_Cell:0x827a400.minY == 46 + 1*0x8281b30.marker + -0.5*0x82823f0.marker UILabel:0x827a8e0.Width == 0 + 1*0x827b730.marker + 1*0x827b790.marker + -1*0x827b7d0.marker + 1*UILabel:0x827adc0.Width UILabel:0x827a8e0.minX == 18 + 1*0x827b7d0.marker + 1*0x827b8d0.marker + -1 *0x8281210.marker + 0.5*0x8281260.marker + 1*AsyncImageView:0x827aa00。宽度 UILabel:0x827a8e0.minY == 19.5 + -1*0x827b810.marker + 1*0x827b890.marker + -1*0x827b910.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + *AsyncImageView:0x827aa00.Height + -1*UILabel:0x827a8e0.Height + -1*UILabel:0x827b140.Height UILabel:0x827adc0.minX == 18 + 1*0x827b730.marker + 1*0x827b8d0.marker + -1*0x8281210。标记 + 0.5*0x8281260.marker + 1*AsyncImageView:0x827aa00.Width UILabel:0x827adc0.minY == 20.5 + 1*0x827b6f0.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker UILabel:0x827b140.minX == + 1*0x827b850.marker + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x8281260.marker + 1*AsyncImageView:0x827aa00.Width UILabel:0x827b140.minY == 27.5 + 1*0x827b890.marker + -1 *0x827b910.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + 0.5*AsyncImageView:0x827aa00.Height + -1*UILabel:0x827b140.Height UITableViewCellContentView:0x827a560.Height == 55 + 1*0x82812e0.marker UITableViewCellContentView:0x827a560.Width == 300 + 1*0x8281260.marker UITableViewCellContentView:0x8271a56 *0x8281210.marker + -0.5*0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + < 250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker标记 UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker标记 UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker
约束: Marker:0x8281210.marker Marker:0x8281260.marker Marker:0x82812a0.marker (积分调整:0.5) Marker:0x82812e0.marker Marker:0x8281740.marker Marker:0x8281b30.marker Marker:0x8280fc0.posErrorMarker.posErrorMarker2:0x8 0x827b6f0.marker Marker:0x827b730.marker Marker:0x827b790.marker Marker:0x827b7d0.marker Marker:0x827b810.marker Marker:0x827b850.marker Marker:0x827b890.marker Marker:0x827b8d0.marker Marker:0x827b910.marker Marker:0x8281ee0.marker Marker: 0x82823f0.marker }:内部错误。找不到传入头 0x8280fc0.negError 的传出行头,这永远不会发生。 * First throw call stack: (0x195d012 0x166ae7e 0x195cdeb 0xefef89 0xf01fcf 0xf025c7 0xf0d58f 0xf0d6d4 0x7d860a 0x7e02af 0x7e03be 0x2e7601 0x49484e 0x354ced 0x2e940c 0x354a7b 0x359919 0x3599cf 0x3421bb 0x352b4b 0x2ef2dd 0x167e6b0 0x17dfc0 0x17233c 0x172150 0xf00bc 0xf1227 0xf18e2 0x1925afe 0x1925a3d 0x19037c2 0x1902f44 0x1902e1b 0x29be7e3 0x29be668 0x29effc 0x1e5ed 0x1d75) 2013-08- 19 13:56:06.149 轮询我[4995:4f03] *由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:'{ Rows: AsyncImageView:0x827aa00.minX == 10 + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x8281260.marker AsyncImageView:0x827aa00.minY == 27.5 + -1*0x827b910.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + -0.5*AsyncImageView:0x827aa00.Height Regular_Cell:0x827a400.Height == 56 + 1*0x82823 Regular_Cell:0x827a400.Width == 320 + 1*0x8281ee0.marker Regular_Cell:0x827a400.minX == 0 + 1*0x8281740.marker + -0.5*0x8281ee0.marker Regular_Cell:0x827a400.minY == 46 + 1*0x8281b30.marker -0.5*0x82823f0.marker UILabel:0x827a8e0.Width == 0 + 1*0x827b730.marker + 1*0x827b790.marker + -1*0x827b7d0.marker + 1*UILabel:0x827adc0.Width UILabel:0x827a8e0.minX == 18 + 1*0x827b7d0。标记 + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x8281260.marker + 1*AsyncImageView:0x827aa00.Width UILabel:0x827a8e0.minY == 19.5 + -1*0x827b810.marker + 1*0x827b890.marker + -1*0x827b910.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + 0.5*AsyncImageView:0x827aa00.Height + -1*UILabel:0x827a8e0.Height + -1*UILabel:0x827b140.高度 UILabel:0x827adc0.minX == 18 + 1*0x827b730.marker + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x8281260.marker + 1*AsyncImageView:0x827aa00.Width UILabel:0x827adc0.minY == 20. + 1*0x827b6f0.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker UILabel:0x827b140.minX == 18 + 1*0x827b850.marker + 1*0x827b8d0.marker + -1*0x8281210.marker + 0.5*0x .marker + 1*AsyncImageView:0x827aa00.Width UILabel:0x827b140.minY == 27.5 + 1*0x827b890。标记 + -1*0x827b910.marker + -1*0x82812a0.marker + 0.5*0x82812e0.marker + 0.5*0x82823f0.marker + 0.5*AsyncImageView:0x827aa00.Height + -1*UILabel:0x827b140.Height UITableViewCellContentView:0x827a560 = 55 + 1*0x82812e0.marker UITableViewCellContentView:0x827a560.Width == 300 + 1*0x8281260.marker UITableViewCellContentView:0xlibc++abi.dylib: 终止调用抛出异常827a560.minX == 0 + 1*0x8281210.marker + -0.5 *0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + <250:-1>*0x8280fc0 .posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker高度 + -1*UILabel:0x827b140.Height UITableViewCellContentView:0x827a560.Height == 55 + 1*0x82812e0.marker UITableViewCellContentView:0x827a560.Width == 300 + 1*0x8281260.marker UITableViewCellContentView:0xlibc++abi.dylib:终止调用异常827a560.minX == 0 + 1*0x8281210.marker + -0.5*0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750: -1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker高度 + -1*UILabel:0x827b140.Height UITableViewCellContentView:0x827a560.Height == 55 + 1*0x82812e0.marker UITableViewCellContentView:0x827a560.Width == 300 + 1*0x8281260.marker UITableViewCellContentView:0xlibc++abi.dylib:终止调用异常827a560.minX == 0 + 1*0x8281210.marker + -0.5*0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750: -1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker终止称为抛出异常827a560.minX == 0 + 1*0x8281210.marker + -0.5*0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker终止称为抛出异常827a560.minX == 0 + 1*0x8281210.marker + -0.5*0x8281260.marker UITableViewCellContentView:0x827a560.minY == 0.5 + 1*0x82812a0.marker + -0.5*0x82812e0.marker 目标 == <> + <750:-1>*0x8280fc0.negError + <250:-1>*0x8280fc0.posErrorMarker + <750:-1>*0x8281030.negError + <250:-1>*0x8281030.posErrorMarker
约束: Marker:0x8281210.marker Marker:0x8281260.marker Marker:0x82812a0.marker (积分调整:0.5) Marker:0x82812e0.marker Marker:0x8281740.marker Marker:0x8281b30.marker Marker:0x8280fc0.posErrorMarker.posErrorMarker2:0x8 0x827b6f0.marker Marker:0x827b730.marker Marker:0x827b790.marker Marker:0x827b7d0.marker Marker:0x827b810.marker Marker:0x827b850.marker Marker:0x827b890.marker Marker:0x827b8d0.marker Marker:0x827b910.marker Marker:0x8281ee0.marker Marker: 0x82823f0.marker }:内部错误。找不到传入头 0x8280fc0.negError 的传出行头,这永远不会发生。 * First throw call stack: (0x195d012 0x166ae7e 0x195cdeb 0xefef89 0xf01fcf 0xf020d3 0x7d86dc 0x7d9280 0x7dd4a3 0x3f7e3c 0x3f8022 0x3f8064 0x2f33b 0x277553f 0x2787014 0x27782e8 0x2778450 0x92710e72 0x926f8d2a) (lldb)
你能告诉我为什么会这样吗?我不想将 NSLog() 保留在那里,因为它会多次运行它并且在尝试读取输出时会妨碍它。提前谢谢你=)
ios - 使用 NSURLConnection 和 dispatch_async 时的内存永远不会被释放
为了了解这些东西是如何工作的,我编写了一个带有开始按钮的简单 iPhone 应用程序。按下该按钮会触发执行以下操作的操作:
}
ReportMemory 函数如下所示:
}
我读过全局队列有自动释放池,但它们只是间歇性地清空,所以我尝试了使用和不使用 @autoreleasepool 宏,我看不出在内存使用方面有任何区别。
问题是,为什么每次按下开始按钮时,ReportMemory 会显示越来越多的内存使用量?我原以为自动释放池在某个时候会被清空。但在我的情况下,它一直在增加,直到我收到一些内存警告,当 ReportMemory 报告使用了大约 400MB 时,应用程序被关闭。
请注意,像这样使用 sendSynchronousRequest 仅用于演示目的。