随笔分类 - iOS技术细节
摘要:最近在解决百度音乐iPhone客户端偶现数据库操作crash的问题,顺手整理了下CoreData的多线程原则,以及实际开发时应该如何遵守这些原则。 Core Data多线程操作的基本原则 1. 不允许跨线程访问MOC: 在某一个MOC上的CRUD操作只能在它的操作线程上进行
2. 不允许跨线程...
阅读全文
摘要:我的 "这篇文章" 里提到了,关于Core Data的数据迁移过程有两个维度可以自定制: 1. 在迁移的过程中可以执行自定制的代码。通常是通过提供自己的migration policy类来实现。
2. 可以自定制版本检测和迁移过程。指的是自己建立migration manager,判断是否需要迁...
阅读全文
摘要:为什么需要迁移数据? 数据库的模型文件发生了变化;旧的数据库文件无法按照新的数据库模型被读取,因此需要迁移到新的数据库文件中。 数据迁移的过程 Core Data分别创建了两个stack:source stack和destination stack, 然后遍历Mapping model中每个...
阅读全文
摘要:本文于2015.11.22进行了修改。 1. 什么NSOperationNSOperation为控制任务状态、优先级、依赖关系以及任务管理提供了一种线程安全的结构。可以通过调用 方法来手动启动一个任务,或者把它加入到NSOperationQueue中,当它到达队列头部时自动启动。 2. NSOper...
阅读全文
摘要:一、多线程设计 基本是按照我的 "这篇文章" 中的第二种方案。MR提供的与每个线程绑定的ctx都是以default context为parent context的, 从而实现子线程的操作可以同步到主线程中去 二、MR中维护的MOC结构 为了方便说明,以下内容中采用简称:RSC = root sa...
阅读全文
摘要:1. 线程访问限制 1. NSManagedObjectContext不允许跨线程操作 2. NSManagedObject不允许跨线程访问 这两处所说的线程指的NSManagedObjectContext类私有的<code \_dispatchQueue</code , 我把它叫做MOC的...
阅读全文
摘要:本文分两个部分,第一部分为使用Xcode IDE来建立data model以及nsmanagedobject subclass, 第二部分为代码中对数据库进行CURD的操作 Xcode操作步骤 创建Data Model: New File iOS Core Data Data Model
...
阅读全文
摘要:本文介绍的Core Data的基本概念是基于最常见的场合: Core Data配合SQLite数据库使用。Core Data也可以处理内存中的数据,这点不在讨论范围内1. Core Data中基本的类 NSEntityDescription: 数据库实体的描述 NSManagedObject:...
阅读全文
摘要:在了解Core Data是什么之前,首先介绍几个概念:1. ORM 什么是ORM? 对象 关系映射(object relational mapping),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的...
阅读全文
摘要:Part 1: 使用范围 能拦截NSURLRequest请求When anNSURLSession, NSURLConnection, or NSURLDownload object initiates a connection for an NSURLRequestobject, the URL...
阅读全文
摘要:这里列举一些关于OC中,正常人都不会关注的细节。不断增加中。。。 1. UINavigationController.navigationController 永远为nil
阅读全文
摘要:block是我在项目中比较常用,也比较爱用的一项技术。原因有两点:* 使代码更紧凑,可读性更强* 可capture上下文中的变量 当然,block使用不恰当的话,也会引起一些难以发现和追踪的问题:* 循环引用,以及* 会延长其capture的上下文中的变量的生命周期。至于其他的,比如代码紧凑带来的...
阅读全文
摘要:##Requirements for Object Copying* 实现`NSCopying`协议.@protocol NSCopying -(id)copyWithZone:(NSZone *)zone@end注意:返回的对象都是immutable的。* NSObject中定义了`- (id)...
阅读全文
摘要:###property是什么property只是accessors的shortcut ###synthesize和dynamic`@synthesize`会在编译时创建accessors(需要时会创建ivar)。 `@synthesize`只会创建不存在的方法。比如,如果已有自定义的setter...
阅读全文
摘要:##.a是什么.a是一堆.o文件的archive(The produced object files can be put in special archives called static libraries, for easier reusing later on) 可以用nm命令查看包含...
阅读全文
摘要:#前言最近刷了一遍w3cschool上关于js的教程,读到了关于cookie的知识;也随手翻阅了下iOS对于cookie的支持。简单做一下小结#cookie的作用指为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)----百度百科#cookie的属性包含domain...
阅读全文
摘要:#bug描述用户反馈,最新版的百度音乐HD安装闪退。删除后安装仍然闪退。从用户设备上导出的log如下: >Exception Type: EXC_BREAKPOINT (SIGTRAP) >Exception Codes: 0x00000001, 0xe7ffdefe >Crashed T...
阅读全文
摘要:本文为原创内容,转载请注明链接。谢谢。 获取商品信息时的错误处理 获取商品信息时,提示无法连接到iTunes Store。这个问题是说无法连接到苹果的服务器。目前除了重试,没有别的办法 获取商品信息时,返回的response里invalidProductIdentifiers不为空且拿不到p...
阅读全文
摘要:最近完成了百度音乐音频广告联盟SDK的开发。下面总结一下iOS平台SDK开发过程中的事项,以及我个人的一些思考。 #前言 这里谈到的SDK开发是指静态库.a形式的SDK。动态framework形式的SDK开发(比如rollout)不在本文讨论的范围#交付内容SDK完整交付时,通常要包括: *...
阅读全文
摘要:最近在研究iOS app动态更新机制时,研究了iOS中自定义framework的机制,发现几个现象: 1. apple官方的framework,有些有签名(比如CoreFoundation.framework)
浙公网安备 33010602011771号