![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发笔记
隔壁-老王
生命不息,进步不止。厚道做人,认真做事。
展开
-
NSDictionary或者NSArray中包含NSNull对象,无法写入文件
场景:使用AFNetworking2.0+时,调用POST方法来请求数据,为了支持离线浏览,准备将返回的responseObject写入本地文件进行保存。问题:已确认responseObject的class是NSDictionary,但是使用-writeToFile:atomically:方法总是返回NO,也就是写入失败。自己尝试自定义一个NSDictionary,结果是成功的。分析:自定原创 2015-03-05 09:41:40 · 1137 阅读 · 0 评论 -
ios 比较__unsafe_unretain、__strong、__weak、__autoreleasing
在前面分析了nomantic、copy、retain等属性之后,在教新的XCode版本中,我们又经常会看到__unsafe_unretain、__strong、__weak、__autoreleasing这四种属性,那么他们有什么用呢?__unsafe_unretain、__strong、__weak、__autoreleasing是出现在 LLVM 编译器 3.0版本之后。而__unsa转载 2015-03-11 18:05:07 · 396 阅读 · 0 评论 -
ARC中的@property
转自 http://blog.csdn.net/q199109106q/article/details/8565561本章介绍引入ARC后@property的使用,跟ARC之前的还是很不一样的一、.h和.m文件的变化说明1.对于.h头文件,主要是将属性定义由retain变为strong[java] view plain转载 2015-03-11 18:24:08 · 365 阅读 · 0 评论 -
在Cocoa Touch框架中使用迭代器模式
苹果公司用自己的命名规则“枚举器/枚举”改写了迭代器模式,用于相关基础类的各种方法。从现在开始,我将使用“枚举”一词,它就是苹果版本的“迭代”。在这个模式中它们是一个意思。基础框架中的NSEnumerator类实现了迭代器模式。抽象NSEnumerator类的私有具体子类返回枚举器对象,能够顺序遍历各种集合——数组、集(set)、字典(值与键),把集合中的对象返回给客户端。NSDirect转载 2015-03-11 14:08:26 · 446 阅读 · 0 评论 -
Objective-C属性修饰符strong和copy的区别
问题描述在定义一个类的property时候,为property选择strong还是copy特别注意和研究明白的,如果property是NSString或者NSArray及其子类的时候,最好选择使用copy属性修饰。为什么呢?这是为了防止赋值给它的是可变的数据,如果可变的数据发生了变化,那么该property也会发生变化。代码示例还是结合代码来说明这个情况@interfa转载 2015-03-11 17:34:02 · 373 阅读 · 0 评论 -
xcode-select – 更改默认Xcode
如果你的电脑中有几个xcode版本,比如一个xcode5.1.1,一个xcode6-beta, 当你打开工程的时候,通常会有一个默认配置,或者使用terminal命令行操作,需要选择使用xcode的不同版本,怎么更改这个配置呢? 请看下文:It’s not uncommon developers to have multiple versions of Xcode installed.转载 2015-03-12 09:59:20 · 453 阅读 · 0 评论 -
ObjC的initialize和init
Objective-C很有趣的一个地方是,它非常非常像C。实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime)。有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性。C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少。Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与。在Obj转载 2015-03-12 20:28:49 · 370 阅读 · 0 评论 -
AppStore审核新规则:带有版本更新的App将被拒绝
问题:之前上传了一个APP到AppStore上进行审核,过了几天被拒绝了,理由如下:10.6 - Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple原创 2015-03-14 13:14:09 · 5339 阅读 · 0 评论 -
plist文件无法打包进.a静态库中
问题:之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的。但是突然有个想法,因为有很多参数的配置是在一个plist文件中的,虽然也知道这是一个plist文件,但是想想和图片资源还是有一定区别的,所以就尝试着能否把plist打进静态库中。分析:1. 创建了一个简单的生成静态库的功能,然后公开了一个接口,用来输出读取plist文件的结果。2. 创建一个简单的原创 2015-03-18 16:02:26 · 991 阅读 · 0 评论 -
iOS中的sleep()函数阻塞的是哪个线程
问题:在做多线程开发的时候,测试case里面做一个延迟的操作,想到了sleep()函数,但是又不能确定它到底阻塞的是主线程还是当前线程。分析:于是自己测试了一下,用dispatch_queue_create创建了一个串行队列,然后在这个dispatch_queue_t上执行sleep(10),结果发现阻塞的是这个串行队列,而主线程没有收到影响。而且我在这个串行队列中多次调用sleep(原创 2015-04-09 16:58:49 · 6784 阅读 · 0 评论 -
MKNetworkKit 的使用
现在,大家使用最多的网络框架基本上就是AFNetworking,ASIHttpRequest,MKNetWorkKit等。ASIHttpRequest功能很强大,早期的项目使用的较多,只是后续不再更新维护了,因此已成为过去时。而AFNetworking采用了block模式,代码的紧凑性和可读性得到了大幅度的提升,现在手头上的几个项目就使用了这个框架。该框架不提交接口数据缓存功能,可以通原创 2015-03-11 15:39:49 · 620 阅读 · 0 评论 -
self在类方法和实例方法中的解读
类方法里面的self,是Class;实例方法里面的self,是对象的首地址。尽管在同一个类里面的使用self,但是self却有着不同的解读。在类方法里面的self,可以翻译成Class self;在实例方法里面的self,应该被翻译成为object self。在类方法里面的self和实例方法里面的self有着本质上的不同,尽管他们的名字都叫self。原创 2015-03-10 17:34:26 · 508 阅读 · 1 评论 -
NSPredicate(过滤器)
第十七章 NSPredicate编写软件时,经常需要获取一个对象集合,然后删除不满足条件的对象,保留符合条件的对象,从而提供一些有意义的对象。Cocoa提供了一个名为NSPredicate的类,他用于指定过滤器的条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断他们是否与条件相匹配。Cocoa用NSPredicate描述查询的方转载 2015-03-11 14:23:53 · 606 阅读 · 0 评论 -
Objective-C中的static用法
Objective-C中的static变量表示的是类变量,仅初始化并存储一次,该类的所有实例共享该变量。一般都定义在.m文件中,函数体之中或函数体之外。定义在函数体之中的static变量(局部静态变量),其作用域就是所在的函数体,即仅在所在函数体内可用。定义在函数体之外的static变量(全局静态变量),可以被所在类的所有方法访问。但是这两种方式定义的static变量都不可被其他类直接访问。原创 2015-03-07 22:25:24 · 737 阅读 · 0 评论 -
iOS静态库.a不区分ARC和MRC
问题:有同事问:“我们自己开发的SDK是支持ARC还是不支持ARC?”答:“由于之前一直在非ARC环境下开发,故不支持。”问:“那集成到支持ARC的项目中会有问题吗?”答:“不会。”分析:其实ARC只是编译器的特性,在编译代码的过程中会自动在适当的地方添加release之类的语句,它不是真正意义上的gc垃圾回收。而静态库就是编译后的代码,因此是不会有ARC和非ARC之说的。原创 2015-03-17 18:12:36 · 1330 阅读 · 0 评论 -
iOS中类工厂方法介绍
类工厂的主要理念在于产生并返回一个特定类的实例对象,并在产生对象时尽可能的预填充数据。相比调用 alloc/init 再设置特性,使用类工厂的一个显而易见的好处就是,你的代码将会缩短很多。 这样,你就能使用一个方法来创建一个对象并初始化它的所有特性,而不需要用一个方法来创建对象,再用很多行代码来设置各种特性。与此同时,这种技术还有两个不太明显的好处。 其一,它强制了转载 2015-03-09 16:31:16 · 1675 阅读 · 0 评论 -
Objective-c中的posing
谈到这个posing,真是有些惭愧,还没了解这个是怎么回事,就已经被苹果给抹去了。尽管如此,还是整理了一些文章,以供参考。===================================================================Posing,顾名思义,意思是“冒充”,它跟categories类似,但本质上不一样,Posing存在的目的在于子类可以冒充原创 2015-03-09 17:31:26 · 612 阅读 · 0 评论 -
Obj-C的多态性、动态类型和动态绑定
Obj-C是一门强大的面向对象的编程,因此它具有面向对象的很多特征,比如多态性,支持动态类型和动态绑定。我们来分别学习一下:1. 多态性多态性是个生物名词,用来表示生物体在生命周期中的不同形态,用在编程语言中则表示相同的方法名,但是却有不同的实现方式。或者说相同的名字,不同的类。我们来看一个书上的示例:01#import转载 2015-03-09 16:49:53 · 486 阅读 · 0 评论 -
iOS GCD使用指南
GCD开发转载 2015-02-27 18:24:46 · 347 阅读 · 0 评论 -
Objective-C中[self self]的含义
问题:在分析MKNetworkKit源码的时候,遇到下面这段代码:+(void) initialize { if(!_sharedNetworkQueue) { static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _sharedNetworkQueue = [[N原创 2015-03-10 16:58:24 · 454 阅读 · 0 评论 -
详解键值观察(KVO)及其实现机理
文章转自 http://www.cppblog.com/kesalin/archive/2012/11/17/kvo.html [深入浅出Cocoa]详解键值观察(KVO)及其实现机理罗朝辉 (http://www.cppblog.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议一,前言Objective-C 中的转载 2015-03-11 13:47:30 · 327 阅读 · 0 评论 -
Xcode工程中ARC的开启和禁止
转自 http://blog.csdn.net/q199109106q/article/details/8565403要想将非ARC的代码转换为ARC的代码,大概有2种方式:1.使用Xcode的自动转换工具2.手动设置某些文件支持ARC一、Xcode的自动转换工具Xcode带了一个自动转换工具,可以将旧的源代码转成ARC模式转载 2015-03-11 18:17:44 · 545 阅读 · 0 评论 -
iOS多线程中performSelector: 和dispatch_time的不同
iOS中timer相关的延时调用,常见的有NSObject中的performSelector:withObject:afterDelay:这个方法在调用的时候会设置当前runloop中timer,还有一种延时,直接使用NSTimer来配置任务。这两种方式都一个共同的前提,就是当前线程里面需要有一个运行的runloop并且这个runloop里面有一个timer。我们知道:只有主线程会转载 2015-04-09 20:25:09 · 466 阅读 · 0 评论