Monthly Archives: November 2014

iOS创建单例的两种方法

1、苹果官方文档中的写法

1
2
3
4
5
6
static AccountManager *DefaultManager = nil;  
 
+ (AccountManager *)defaultManager {  
    if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];  
    return DefaultManager;  
}

2、iOS4之后有了另外一种写法:

1
2
3
4
5
6
7
8
9
+ (AccountManager *)sharedManager  
{  
        static AccountManager *sharedAccountManagerInstance = nil;  
        static dispatch_once_t predicate;  
        dispatch_once(&predicate, ^{  
                sharedAccountManagerInstance = [[self alloc] init];   
        });  
    return sharedAccountManagerInstance;  
}

3、该写法来自 objcolumnist,文中提到,该写法具有以下几个特性:[……]

继续阅读

iOS开发模拟器上使用GPS

1、虽然说MacBook上带GPS功能,但xCode里的iPhone模拟器不能调用笔记本的GPS来进行定位,或许是兼顾其他OS不带GPS功能而有意屏蔽的吧,先不管这个多,如果我们在模拟器上调试程序时需要使用到GPS定位,如何模拟呢。

2、iOS模拟器–调试–位置–自定义位置,可以自行输入经纬度将位置信息传递给模拟器。

QQ20141112-1@2x

QQ20141112-2@2x

3、好,那么问题来了,我怎么知道我当前的位置或者我需要模拟的位置经纬度呢?不用担心,Google地图已经帮我们做了这个事情了。[……]

继续阅读

iOS开发中字符串MD5加密方法的实现

1
2
3
4
5
- (NSString *) md5
{
    const char *cStr = [self UTF8String];
    unsigned char result[16];
    CC_MD5( cStr, (unsigned int) strlen(cStr), result);[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2014/11/11/175838465.html">继续阅读</a></p>

iOS开发中post请求图片上传如何实现

1、网络请求中常用的有Get请求,Post请求,还有Head、Put、Delete、Options、Trace、Connect等

GET 获取指定资源
POST 向指定资源提交数据进行处理请求,在RESTful风格中用于新增资源
HEAD 获取指定资源头部信息
PUT 替换指定资源(不支持浏览器操作)
DELETE 删除指定资源
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断
CONNECT 预留给能够将连接改为管道方式的代理服务器(HTTP代理使用)

[……]

继续阅读

多线程技术NSOperationQueue的2种队列操作示例

1、NSOperation的两个子类NSBlockOperationNSInvocationOperation,前者通过Block实现队列执行体,后者通过调用方法实现。

2、创建好NSOperation任务后,加入到系统队列,分为自定义队列即通过NSOperationQueue创建,或加入到主队列[NSOperationQueue mainQueue]

3、以上两步即可搞定,NSOperation/NSOperationQueue中程序不需要关心同步/异步、串行/并行问题,由框架自动处理,因此使用起来更方便更安全。

4、操作任务一添加到队列中即会执行,这一点与GCD不同。

5、如果需要指定任务的先后执行任务,可使用NSOperation的 addDependency: 方法,如 [op2 addDependency:op1]表示op2依赖于op1,因此会在op1后被执行。(注意不要出现循环依赖)

6、如果需要限制线程数,可通过NSOperationQueue的 setMaxConcurrentOperationCount: 方法实现,如图片下载任务在WiFi环境中线程数为6,3G环境中为3[……]

继续阅读