zoukankan      html  css  js  c++  java
  • Ream--(objc)写事务精简方案

    Ream--(objc)写事务精简方案

    地址: REALM--

    Realm官方提供的的写事务有两种方式:

    A
    [realm beginWriteTransaction];
    // ... [realm commitWriteTransaction]; B [realm transactionWithBlock:^{ //... }];

    由于realm强制线程安全,所以realm对象不适合持有。所以造成了realm写事务面向realm编程,而不是面向RLMObject编程。或者说realm的面向过的程痕迹还没消除干净,追求速度的realm由c++实现,realm选择了速度放弃了一些便利。

    这种编码方式才是我们期望的
    [object commitTransaction:^(object){ object.key = value; }];

    常见的封装策略都是围绕AB两种形式。围绕A形式封装的问题是代码损耗大,作用域不直观,并且中间不能return,B形式封装的问题是夸闭包传值代码损耗大,调试原作用域浪费时间,不能return。

    最理想的编码方式是一行

    {
        @realm_writing; /// Begin commit
        object.key = value;
    } /// Commit when leava current scope.

    这种写法最佳方案是借助C++的析构函数,胆使用C++会要求所有.m文件修改为.mm。最终选择的是使用attribute来实现。

  • 相关阅读:
    Blob格式数据处理以及DataTable问题处理
    JavaScript 与 jQuery-简记
    JFinal-学习笔记(下)
    JFinal学习笔记
    工作记录
    读书笔记——计算机科学导论
    面试经验大全
    如何在liunx系统发布项目
    面试必备
    最全面的测试用例
  • 原文地址:https://www.cnblogs.com/xiaobajiu/p/12231532.html
Copyright © 2011-2022 走看看