IOS coredata一点心得

IOS的第一个项目,要弄一个离线版,要读存数据库,当然选择了CoreDate

随之出现了一点问题,

1.在大量使用GCD和block以后发现程序会卡死在executefetchrequest执行

  网上搜了一搜,发现问题了,原来在线程中NSManagedObjectContext会创建一些私有方法。跨线程使用时候就会出问题。

  解决办法就是多个线程执行时候创建多个NSManagedObjectContext管理。关联到NSPersistentStoreCoordinator

  (这个地方,反复想了想,可能是我的用法用错了,NSManagedObjectContext的创建仅仅在多线程里使用,别的用默认的即可)

2.那好,既然发现了问题那就解决呗,多个线程执行时候创建多个NSManagedObjectContext管理,而我们的项目,没有上下拉刷新,而是采取在进入页面的时候从服务器同步数据,然后放入本地数据库,取出数据,页面reload,这样每点击一个页面就有一个多线程,那就是N个NSManagedObjectContext,那内存是蹭蹭的上涨,在ipod上闪退现象严重

  无奈啊,这两天突然间想到了一个办法,那就是模拟JDBC连接池,只是一个初步的思想,把想法说一下

  在程序打开的时候,就创建一个NSMutableArray,然后初始化N个NSManagedObjectContext,并且放入NSMutableArray,然后在查询,保存时候,查询NSMutableArray有没有可用的NSManagedObjectContext,如果有则取出,如果没有则等待,在如果有的情况下,开始操作,在操作完毕,大概是在excuteFecthRequest时候和save之后 将NSManagedObjectContext再次放入NSMutableArray,首先要保证NSMutableArray线程安全,加上单例设计模式?这些仅仅是想法,还未实现

IOS coredata一点心得,布布扣,bubuko.com

IOS coredata一点心得

上一篇:IOS 掉用系统发短信


下一篇:Android图片内存优化的几点心得