首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从包含非托管对象的错误线程访问的领域

从包含非托管对象的错误线程访问的领域
EN

Stack Overflow用户
提问于 2019-11-14 01:21:57
回答 1查看 89关注 0票数 0

领域文档说T(value: Any)创建一个非托管对象,这样的对象在不同的线程中没有问题,这是怎么回事?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func getOne<T : Object>(type : T.Type) -> Promise<T> {
        return Promise { seal in
            self.operatingQueue.async {
                autoreleasepool {
                    if let realm = self.openRealm() {

                        let results = realm.objects(T.self)

                        if let first = results.first {
                            let unmanaged : T = T(value: first, schema : .partialPrivateShared())
                            seal.fulfill(unmanaged)
                        }

                    } else {
                        seal.reject(PersistanceError.couldNotOpenDatabase)
                    }
                }
            }
        }
    }

此代码崩溃,并显示以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2019-11-13 20:08:51.259420-0500 CommonStock[6395:131786] *** Terminating app due to uncaught exception 'RLMException', reason: 'Realm accessed from incorrect thread.'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff23baa1ee _exceptionPreprocess + 350
1 libobjc.A.dylib 0x00007fff50864b20 objc_exception_throw + 48
2 Realm 0x000000010b69e11b ZN12_GLOBAL__N_114translateErrorIZ13RLMDynamicGetE3$5EEDaOT + 155
3 Realm 0x000000010b69dfdc RLMDynamicGet + 284
4 Realm 0x000000010b69e57d RLMDynamicGetByName + 1053
5 RealmSwift 0x000000010d6c2f44 $s10RealmSwift6ObjectCyypSgSScig + 708
6 RealmSwift 0x000000010d6c2b82 $s10RealmSwift6ObjectCyypSgSScigTo + 98
7 Realm 0x000000010b71ad1a -[RLMObjectBase descriptionWithMaxDepth:] + 714
8 Realm 0x000000010b6d4f7d RLMDescriptionWithMaxDepth + 1101
9 RealmSwift 0x000000010d6b4a27 $s10RealmSwift8ListBaseC23descriptionWithMaxDepth33_027551CC6B6B2DBBB6CF4A740CB6E5D6LLySSSuF + 247
10 RealmSwift 0x000000010d6b4bd0 $s10RealmSwift8ListBaseC23descriptionWithMaxDepth33_027551CC6B6B2DBBB6CF4A740CB6E5D6LLySSSuFTo + 48
11 Realm 0x000000010b71adc5 -[RLMObjectBase descriptionWithMaxDepth:] + 885
EN

回答 1

Stack Overflow用户

发布于 2019-11-14 01:32:45

错误不是抱怨你的对象,而是抱怨你的Realmself.openRealm()的代码实际上是做什么的,为什么这是一个实例方法?你有没有试着用一个普通的let realm = try? Realm()替换它。您可以从另一个线程访问一个realm,但需要为该线程实例化一个Realm对象;您不能在线程上使用与创建线程的Realm实例不同的Realm实例。我猜您是在一个线程上创建并持久化Realm,然后尝试在另一个线程上使用它。

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

https://stackoverflow.com/questions/58848020

复制
相关文章
C#访问非托管DLL
前段时间写了一个读卡器程序,使用到了一个DLL。在.NET 中调用DLL还是相当简单的。我也是转别人的代码,自己的不写。下面就是代码: C#中要使用动态链接库中的导出函数,只能在程序中根据DllAtribute显示调用,无法在运行阶段动态加载,但是我们可以利用WIN32 API的LoadLibrary和FreeLibrary打到目的,问题是根据GetProcAddress()函数获取到的导出函数的地址无法在C#中利用,网上很多方法多是利用对函数调用栈的操作来达到在C#中操作的目的.    其实如果导出函数
用户1105954
2018/01/12
1.5K0
非线程安全对象�
今天的微博有人讨论到对象池,我想到之前项目的实现,应该用模板来实现啊,唉,还是被前人的想法给框定了,只是实现一个特别简单,花了几分钟写了个:
全栈程序员站长
2022/07/12
2510
[转]托管代码与非托管代码
      托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET   FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段:       1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#)       2.托管代码编译为microsoft的平台专用语言。
莫问今朝
2019/02/25
4.7K0
什么是网站托管服务?网站托管服务的内容都包含哪些
网站托管服务是目前很多中小企业选择的外包服务之一,当然也依然有很多人对什么是网站托管服务并不了解,接下来小编为大家分享网站托管服务是指什么、都有哪些类型、什么企业适用以及具体有哪些服务内容,一起来看看吧。
优化猩
2023/03/06
4K0
什么是网站托管服务?网站托管服务的内容都包含哪些
Java多线程——对象及变量的并发访问
Java多线系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线程的深入剖析。
说故事的五公子
2019/12/02
2K0
C# 非托管资源的释放
1、C#垃圾回收器的出现意味着,程序猿们不再需要担心不再需要的对象,只要让这些对象的所有引用都超出作用域,并允许垃圾回收器,在需要时释放内存即可,但是垃圾回收器并不知道如何回收非托管资源的(列如文件句柄、网络连接和数据库连接等)。托管类在封装对非托管资源的直接或间接引用时,需要制定专门的规则,确保非托管资源在回收一个类的实例时释放。 2、在定义一个类时可以使用两种机制来释放非托管的资源。这些机制常常可以放在一起实现,因为每种机制都为问题提供了略为不同的解决方案,这两种机制是: (1)、申明一个析构函数(或终
郑小超.
2018/01/26
1.4K0
C# 托管资源与非托管资源
Net平台中,CLR为程序员提供了一种很好的内存管理机制,使得程序员在编写代码时不要显式的去释放自己使用的内存资源(这些在先前C和C++中是需要程序员自己去显式的释放的)。这种管理机制称为GC(garbage collection)。GC的作用是很明显的,当系统内存资源匮乏时,它就会被激发,然后自动的去释放那些没有被使用的托管资源(也就是程序员没有显式释放的对象)。
zls365
2020/12/29
3.2K0
C#托管代码和非托管代码
托管代码:是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。本地代码经过两次编译,第一次将源代码编译成中间代码(MSIL,MicrosoftIntermediate Language),第二次由.net中的CLR将中间代码编译成机器代码。程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服 务,例如内存管理、安全管理、线程管理等等。和托管资源/非托管资源不同,不要弄混。
kiki.
2022/09/29
3.6K0
安全问题无处不在:从非托管桌面开始
未修补和不受监控的Windows桌面是一个开放的大门,可以让病毒和木马潜入您的网络。除了恶意软件,这些桌面还可以作为恶意用户窃取或删除关键公司数据的窗口。如果怀有恶意的黑客可以访问您的计算机,他们将尝试不同的选项来窃取公司数据或借助您的网络以寻找更大的收获。
Happiness And Benefit
2018/08/13
1.4K0
win10 uwp 非ui线程访问 ui
大家都知道,不可以在 其他线程访问 UI 线程,访问 UI 线程包括给 依赖属性设置值、读取依赖属性、调用方法(如果方法里面修改了依赖属性)等。一旦访问UI线程,那么就会报错,为了解决这个问题,需要使用本文的方法,让后台线程访问 UI 线程。
林德熙
2019/03/13
5460
win10 uwp 非ui线程访问 ui
大家都知道,不可以在 其他线程访问 UI 线程,访问 UI 线程包括给 依赖属性设置值、读取依赖属性、调用方法(如果方法里面修改了依赖属性)等。一旦访问UI线程,那么就会报错,为了解决这个问题,需要使用本文的方法,让后台线程访问 UI 线程。
林德熙
2018/09/18
1.1K0
多线程编程学习二(对象及变量的并发访问).
一、概念 非线程安全:会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是取到的数据其实是被更改过的. 线程安全:获得的实例变量的值是经过同步处理的,不会出现脏读的现
JMCui
2018/03/16
1.1K0
多线程编程学习二(对象及变量的并发访问).
jvm对象的访问
在 HotSpot虚拟机中,对象在内存中存储的布局分为三块区域:对象头,实例数据,和对齐填充。
海向
2020/07/03
8150
从找对象到多线程
最近遇到了一个和多线程有关的事,顺便简单复习了下相关概念,稍后举个栗子?来解释下。 进程 and 线程 进程我们都知道,就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
出其东门
2019/09/17
4100
从找对象到多线程
五、对象的结构、对象的访问定位
           对象指向元数据的指针,虚拟机通过这个指针来确定对象是那个类的实例
梅花
2020/09/28
9450
CoreData 探秘 - 从数据模型构建到托管对象实例
对每一个使用 Core Data 的开发者来说,用 Xcode 的 Core Data 模型编辑器构建数据模型、创建容器、加载数据模型并通过托管对象上下文最终创建托管对象实例,这都是十分普通的过程。但你是否好奇过这一切的内部运行机制,Core Data 是如何在幕后辅助我们完成这一切的?本文将深入探究 Core Data 是如何通过数据模型构建出托管对象实例的内部运行机制,读完本文可以让你对 Core Data 的工作流程有更深入的理解,在开发中可以更得心应手。
东坡肘子
2023/09/19
2850
CoreData 探秘 - 从数据模型构建到托管对象实例
JAVA的对象访问定位
创建对象是为了访问对象,Java程序通过栈的引用(reference)数据来操作堆上的对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用。并没有规定通过该引用怎么定位,访问堆中的对象。具体需要看虚拟机的实现。
开源日记
2020/12/02
1.2K0
java 对象的访问定位
建立对象就是为了使用对象,我们的Java程序需要通过栈上的reference 数据来操作堆上的具体对象。由于reference类型在Java虚拟机中只规定了一个指向对象的引用,并没有定义整个引用应该如何去定位,访问堆中的对象的具体位置。所以对象访问方式取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。
爱明依
2019/03/12
1.3K0
redis非授权访问的查毒过程
9月某天日晚,阿里云后台报告有一台服务器在异地登录的告警,初步怀疑是被***了,临时采取关闭这台服务器的方法避免对集群中的其他主机造成危害。
保持热爱奔赴山海
2019/09/18
4940
redis非授权访问的查毒过程
点击加载更多

相似问题

从错误的线程访问的领域

11

IOS领域迅速从错误的线程访问其他领域

10

从错误的线程访问的领域-再次

415

从错误的线程Swift访问的领域

24

领域对象的错误访问列表:从不正确线程访问的领域

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文