目标C,“从主线程调用”的正确方法?

Objective C, Correct way to "Call from Main Thread"?

提问人:intelligentwoman 提问时间:12/13/2021 最后编辑:intelligentwoman 更新时间:8/17/2022 访问量:385

问:

我知道大多数人都会这样做,但是从目标 C 的主线程调用的正确方法是什么?dispatchqueue.main.asyncdispatch_async(dispatch_get_main_queue(), ^{

具体来说,我想从查询代码中的主线程调用 textfieldview。

iOS Objective-C 多线程异常 调用

评论

1赞 Itai Ferber 12/13/2021
主队列是对应于主线程的执行队列,因此调度到主队列将在主线程上运行代码。有什么东西会阻止你这样做吗?
0赞 intelligentwoman 12/13/2021
它的语法代码行是什么?
1赞 Itai Ferber 12/13/2021
这是您上面发布的语法:您要在主线程上运行的代码位于块内部(dispatch_async(dispatch_get_main_queue(), ^{ ... })^{ ... })
2赞 Rob 12/14/2021
顺便说一句,使用该模式将值插入 SQL 是不明智的。如果值中有 a 怎么办?SQL将突然不再有效。相反,您应该在 SQL 中使用占位符,然后将值绑定到这些占位符。在SQLite中,请参阅此处此处。这些是语句,但语句也是如此,例如 (在 中不带引号)。%@websiteTextField.text'?INSERTSELECTSELECT … FROM tableTod WHERE Facils = ??
1赞 sbooth 12/14/2021
扩展一下 @Rob 提出的观点:这可能是一个 SQL 注入漏洞。有关更多信息,请参阅 bobby-tables.com

答:

-1赞 intelligentwoman 12/14/2021 #1

答:

我通过实现调度异步代码找到了解决方案。它不是 SQL 注入。谢谢。

评论

3赞 gnasher729 12/14/2021
显然,这是一个SQL注入漏洞。
1赞 Rob 12/14/2021
尝试搜索带有撇号的字符串(带有 simple 的字符串)。当您准备 SQL 时,它将失败。同样,当您准备格式错误的 SQL 语句时,SQL 注入攻击比简单的错误更重要。使用占位符并绑定值将避免该问题。诚然,它与您的“主线程/队列”问题无关,但这是一件需要牢记的重要事情。如果你不采用这个占位符和绑定值,你最终会后悔的。仅仅因为你解决了你的主线程问题并不意味着你没有更深层次的SQL问题。'??