个人在开发中遇到的一些小坑... 可能会持续更新...

1.RealmObject自带线程保护功能。仅仅能在创建它的线程中訪问。在子线程中不能訪问。

也就是说。假设你在主线程中new了一个RealmObject对象 user。那么在子线程中是訪问不了user对象的。
要想在子线程中訪问,必须先将user存入Ream中,然后在子线程中query出来。

2.假设Realm关闭,全部查询得到的RealmObject都不能使用了。

假设想在子线程中去查询数据,然后在主线程中使用是无法做到的。所以Realm提供的异步查询就非常重要了...

3.假设想在Realm.close()之后继续操作查询得到的对象,仅仅能复制一份数据传出来。
为防止Realm忘记关闭,个人喜欢将Realm的开启和关闭封装在一个函数中。想这样

public User getRealmObject(String code){
Realm realm = Realm.getDefaultInstance();
User user = realm.where(User.class)
.equalTo("code" code)
.findFirst();
realm.close();
return user;
}


注意,上面的代码是错误的。!!

。查出来的user根本不能做不论什么操作!。!

realm Colse掉之后,user对象就不能訪问了,所以仅仅能复制一份数据传出来。
这个比較坑。Realm开发人员是为了它的一个特色功能Auto-Update,即自己主动更新查询到的数据。
特意让查询得到的数据与数据库中的数据保持了同步。所以Realm一关,外面的数据也用不了。

并且,这个Auto-update临时还无法关闭,stackOverFlow上有说以后可能会提供关闭这个功能的方法。

假设你的RealmObject非常复杂,要copy一份数据将会非常麻烦...
并且这还不是最坑的,最坑的是以下这条。

4.假设直接改动或删除query得到的数据。必须在transaction中完毕...
也就是说,你根本不能把query返回的对象。当成普通对象去赋值或删除。假设想要直接操作...ok。把对象copy一份传出来...

临时就这些吧。

Realm多线程中的那些坑...的更多相关文章

  1. Java面试中遇到的坑【填坑篇】

    看到大家对上篇<Java面试中遇到的坑>一文表现出强力的关注度,说明大家确实在面试中遇到了类似的难题.大家在文章留言处积极留言探讨面试中遇到的问题,其中几位同学还提出了自己的见解,我感到非 ...

  2. 整理iOS9适配中出现的坑(图文)

    原文: http://www.cnblogs.com/dsxniubility/p/4821184.html 整理iOS9适配中出现的坑(图文)   本文主要是说一些iOS9适配中出现的坑,如果只是要 ...

  3. c#初学-多线程中lock用法的经典实例

    本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被 ...

  4. iOS多线程中,队列和执行的排列组合结果分析

    本文是对以往学习的多线程中知识点的一个整理. 多线程中的队列有:串行队列,并发队列,全局队列,主队列. 执行的方法有:同步执行和异步执行.那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到 ...

  5. Nancy总结(二)记一次Nancy 框架中遇到的坑

    记一次Nancy 框架中遇到的坑 前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题.Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上 ...

  6. 整理 iOS 9 适配中出现的坑(图文)(转)

    作者:董铂然 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着 ...

  7. 解决DataGridView在多线程中无法显示滚动条的问题

    在多线程中对DataGridView指定 DataSource 来填充数据,更新数据的时候,会导致DataGridView出现假死,显示错误或者滚动条无法显示的问题,在保证了DataGridView的 ...

  8. iOS开发——多线程OC篇&多线程中的单例

    多线程中的单例 #import "DemoObj.h" @implementation DemoObj static DemoObj *instance; // 在iOS中,所有对 ...

  9. c#语言-多线程中的锁系统(一)

    介绍 平常在多线程开发中,总避免不了线程同步.本篇就对net多线程中的锁系统做个简单描述.   目录 一:lock.Monitor        1:基础.        2: 作用域.       ...

随机推荐

  1. 【02】 Vue 之 数据绑定

    2.1. 什么是双向绑定? Vue框架很核心的功能就是双向的数据绑定. 双向是指:HTML标签数据 绑定到 Vue对象,另外反方向数据也是绑定的.通俗点说就是,Vue对象的改变会直接影响到HTML的标 ...

  2. pat 甲级 1065. A+B and C (64bit) (20)

    1065. A+B and C (64bit) (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming G ...

  3. Codeforces 460D. Little Victor and Set

    D. Little Victor and Set time limit per test:1 second memory limit per test:256 megabytes input:stan ...

  4. Repeater用ul li,一行显示多条数据

    原文发布时间为:2009-08-26 -- 来源于本人的百度文章 [由搬家工具导入] .rep {         width:680px;         float:left;         l ...

  5. Linq To Entity学习实践

    public class CustomDataContext<TEntity> : System.Data.Linq.DataContext where TEntity : class,n ...

  6. jQuery动态创建form表单并提交到后台(携带一定的数据进行页面跳转)

    今天遇到这么一个需求,携带一个编号一个名字跳转到另一个JSP页面,直接页面跳转(get携带数据)的话不太安全,于是想到到后台转发一下. 第一种:直接以表单提交方式的进行 JS代码: var form ...

  7. EOJ Monthly 2018.1 F 最小OR路径

    题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b ...

  8. [转]iOS8 自动调整UITableView和UICollectionView布局

    转自:http://www.cocoachina.com/industry/20140825/9450.html (via:玉令天下的Blog)   本文讲述了UITableView.UICollec ...

  9. [转]在Storyboard中使用自定义的segue类型

    转自:http://my.oschina.net/u/728866/blog/92709 我们知道segue共有三种类型:push.modal以及custom.如下图:   很明显,这三种类型的作用分 ...

  10. LeetCode OJ-- Divide Two Integers *

    https://oj.leetcode.com/problems/divide-two-integers/ 在不使用乘法.除法.求余的情况下计算除法. 使用减法计算,看看减几次. 刚开始寻思朴素的暴力 ...