自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (3)
  • 收藏
  • 关注

转载 Objective-C 原子属性

Objective-C 在声明一个属性的时候,想必大家都是不用经过大脑思考就会写 @property (nonatomic, ...。我们都知道属性可以是 nonatomic 也可以使 atomic 的,但是好像几乎所有属性在声明的时候 nonatomic,atomic 的属性几乎没出现过。atomic 修饰符仿佛已被大家遗忘。实际上,如果声明属性时既不写 atomic 也不写 nonat...

2018-07-26 21:13:01 521

转载 避免使用 GCD Global队列创建Runloop常驻线程

避免使用 GCD Global队列创建Runloop常驻线程本文对应 Demo 以及 Markdown 文件在仓库中,文中的错误可以提 PR 到这个文件,我会及时更改。目录 避免使用 GCD Global队列创建Runloop常驻线程 GCD Global队列创建线程进行耗时操作的风险 避免使用 GCD Global 队列创建 Runloop 常驻线程 单一 Runlo...

2018-07-25 17:05:08 890

转载 iOS 统计打点那些事

统计打点是 App 开发里很重要的一个环节,App 的运行状态、改版后的效果、用户的各种行为等都需要打点,市面上也有不少可供选择的第三方库。 假设产品有这么个需求:当用户在详情页点击购买按钮时,记录一下事件。我们实现起来大概会是这样  1234567 // DetailViewController.m- (void)onBuyButto...

2018-07-24 21:11:58 885

转载 GCD使用经验与技巧浅谈

前言GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。dispatch_once_t必须是全局或static变量这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下: 12...

2018-07-24 17:55:27 293

转载 Objective-C的“多继承”——消息转发

当单继承不够用,很难为问题域建模时,我们通常都会直接想到多继承。多继承是从多余一个直接基类派生类的能力,可以更加直接地为应用程序建模。但是Objective-C不支持多继承,由于消息机制名字查找发生在运行时而非编译时,很难解决多个基类可能导致的二义性问题。不过其实 Objective-C 也无需支持多继承,我们可以找到如下几种间接实现多继承目的的方法:消息转发 delegate和prot...

2018-07-24 11:09:29 254

转载 深入理解Objective-C:Category

摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开源框架,从功能繁复的大型APP到简单的应...

2018-07-12 17:49:44 182

转载 深入浅出iOS事件机制

本文章将讲解有关iOS事件的传递机制,如有错误或者不同的见解,欢迎留言指出。iOS的事件有好几种:Touch Events(触摸事件)、Motion Events(运动事件,比如重力感应和摇一摇等)、Remote Events(远程事件,比如用耳机上得按键来控制手机),其中最常用的应该就是Touch Events了,基本存在于每个app的每个地方,今天我们主要就讲讲它,至于其他两个事件有兴趣的可以...

2018-07-10 21:08:27 159

转载 UIView的hitTest和pointInside方法

官方描述- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;Returns a Boolean value indicating whether the receiver contains the specified point.- (UIView *)hitTest:(CGPoint)point withEvent:(UIE...

2018-07-10 20:35:57 479

转载 iOS网络请求在Controller退出后是否应该被取消?

一个编写iOS代码的经典场景:用户进入某个Controller,发起Http网络请求从Server获取数据,在数据返回之前用户退出了Controller。此时是否需要Cancel之前发出的网络请求呢?如果请求的数据只在当前Controller产生内容,结论当然是需要Cancel,虽然我知道不少iOS程序员因为偷懒而忘了取消。我们用工程的思维,深入本质,一起看下这背后都发生了什么,如果不Cancel...

2018-07-10 16:40:38 1061

转载 深度优化iOS网络模块

几乎每一个讲究的iOS项目都会有一个「网络模块」,大部分的网络请求都是通过HTTP完成,使用成熟的第三方库诸如AFNetworking很容易搭建一个功能简易的网络模块。但这一模块要优化好却没那么简单,是个旷日持久的工作,笔者根据自己多年的“填坑”经验,总结一下深度优化iOS项目网络模块的方方面面,也给自己做下知识梳理。预热网络模块的接口设计不在本文讨论之列,设计思路有些偏个人口味,我只探讨一些可以...

2018-07-10 11:30:49 511

转载 iOS网络请求优化之DNS映射

iOS网络请求优化之DNS映射绝大多数网络请求的第一步都是DNS解析,解析请求根据当时网络情况不同,各平台的DNS缓存策略差异等因素,对移动端app整体网络性能会产生或大或小的影响。移动端app网络性能优化涉及到很多方面,DNS映射只是其中一环,也是十分重要的一环,因为它带来的好处不仅仅是降低网络请求的延迟。降低DNS请求带来的延迟客户端app的请求第一步都是DNS解析,但由于cache的存在使得...

2018-07-10 10:26:05 856

转载 Block&&Delegate

作者:黄兢成链接:https://www.zhihu.com/question/29023547/answer/109570584来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。block 和 delegate 都可以通知外面。block 更轻型,使用更简单,能够直接访问上下文,这样类中不需要存储临时数据,使用 block 的代码通常会在同一个地方,这样读代码也连贯。...

2018-07-09 11:27:41 157

原创 GCD中如何取消线程

       在iOS开发中,常用NSOperation和GCD来做多线程的开发,NSOperation有cancel可以取消还未执行的线程。但是没办法做到取消一个正在执行的线程。       GCD目前有两种方式可以取消线程,如下1、类似NSOperation一样,可以取消还未执行的线程。但是没办法做到取消一个正在执行的线程。可以取消还未执行的线程有两种方式:1.1 iOS8后采用提供的API,...

2018-07-07 10:24:54 3767

转载 教你如何取消GCD任务

  GCD 是一种非常方便的使用多线程的方式。通过使用 GCD,我们可以在确保尽量简单的语法的前提下进行灵活的多线程编程。在 “复杂必死” 的多线程编程中,保持简单就是避免错误的金科玉律。然而,GCD不像NSOperation那样可以调用 -(void)cancel 取消一个操作的执行(注意这里的取消只是针对未执行的任务设置finished = YES,如果这个操作已经在执行了,那么我们只能等其操...

2018-07-06 15:09:28 2979

原创 富文本拼接封装,包含空值处理。

    富文本的拼接经常要写一大串代码,有的时候还要拼接图片,才能达到效果,还容易搞错。如果有服务端返回的空值,还会造成程序crash。这里就进行了封装。包含了空值处理。NSAttributedString+AtrtributeText.h文件#import <Foundation/Foundation.h>@import UIKit;@interface NSAttributedSt...

2018-07-06 10:22:52 716

原创 TableView的headerView或者FooterView的高度问题

      在iOS开发中,经常碰到headerView或者FooterView的高度问题,headerveiew和footerView经常根据业务需求高度发生变化,需要调接口。要做到正确的高度,需要进行以下两个步骤:      1、重新设置tableview的headerView或者FooterView,即tableView.tableFooterView = FooterView或tableV...

2018-07-05 14:52:49 5709

转载 NSURLProtocol 全攻略

一位著名的iOS大神Mattt Thompson在http://nshipster.com/nsurlprotocol/ 博客里说过,说“NSURLProtocol is both the most obscure and the most powerful part of the URL Loading System.”NSURLProtocol是URL Loading System中功能最强大...

2018-07-02 19:56:57 2807

转载 常用排序算法总结(二)

   目录计数排序基数排序桶排序   上一篇文章中我们总结了常用的比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。  这篇文章中我们来探讨一下常用的非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。  这里我们用到的唯一数据结构就是数组,当然我们也可以利用链表来实现下述算法。    计数排序(Counting Sort)  ...

2018-07-02 10:54:46 160

转载 常用排序算法总结(一)

 目录冒泡排序  鸡尾酒排序  选择排序插入排序二分插入排序  希尔排序  归并排序堆排序快速排序   我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。  排序算法大体可分为两种:    一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。    另一种是非比较排序,时间复杂度可以达到O(n),...

2018-07-02 10:54:05 132

流媒体协议标准RTSP

流媒体协议标准RTSP,经典不用解释!

2012-04-22

华为内部培训SIP

华为内部培训用的SIP pdf 真的很经典的!

2012-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除