Tag Archives: 算法技巧

关于自定义NSLog需要注意的一点 (自定义SALog)

相信很多开发人员都会自定义NSLog的输入方式,一方面可以自定义自己的输出格式,有利于调试程序,比如说日志输出时打印程序所在的文件与行数;另一方面有利控制日志的输出,比如调试时输出日志,但发布后不输出。
示例:

1
2
3
4
5
6
// 自定义输出 SALog(...)
#ifdef DEBUG
#define SALog(...) NSLog(@"%s-%d行:%@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#else
#define SALog(...)
#endif

问题来了,很多人都知道#ifdef DEBUG的意义在于只有调试时才输出日志,发布时不输出日志,但很多人都只知道在调试时确实有日志输出,可发布呢?无人关心了。其实有个地方是需要设置的,Product–Scheme–Edit Scheme–Info中的Build Configuration,如下图所示:[……]

继续阅读

iOS开发中常用的延时调用方法(基于GCD)

这是一个固定写法,2.0为时间,单位为秒,可修改

1
2
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        /*[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2014/12/24/163706409.html">继续阅读</a></p>

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代理使用)

[……]

继续阅读

多线程技术GCD的8种队列请求示例

1、串行队列同步请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma mark 1、串行队列同步请求
- (void)gcd1
{
    // 创建一个串行队列dispatch_queue_create(标识, 串行队列),DISPATCH_QUEUE_SERIAL 表示串行队列
    dispatch_queue_t queue = dispatch_queue_create("gcd1", DISPATCH_QUEUE_SERIAL);
 
 
    // 发起一个同步任务并执行10次:dispatch_sync(dispatch_queue_t queue, ^{ code })是同步执行函数
    for (int i = 0; i < 10; i++) {
 
        dispatch_sync(queue, ^{
            // 打印当前线程
            NSLog(@"第 %d 次 - %@", i, [NSThread currentThread]);
        });
    }
    // 结论:串行任务按顺序执行,同步任务按顺序执行,无并发数,当前只有一个线程,因此在线程1按顺序执行
}

运行结果:[……]

继续阅读