自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 iOS 享元设计模式 (flyweight design model)

定义:    享元模式是 一种 可共享 对象的一种设计模式。在需要使用大量的细粒度 对象的过程中。这种模式 能很大的减少内存和提升性能。    所谓 细粒度,就是对象相近 而且 数量很多。 我们把这些对象 分成 内部状态 和 外部状态。 内部状态 只使用一个对象来共享,外       部  。外部状态 不能共享出来,是对象区分的。   大体实现:  实现享元模式需要两个关键组件,通

2017-09-27 17:41:01 497 1

原创 iOS 多线程安全高效的访问数据

在 上篇 博客我们讲到 多线程访问数据时会出现数据不正常的问题。现在我们来讲如何安全而且高效的访问数据。方案一: 我们使用 @synchronized 方式 来解决 假设在 controller 中 有如下的属性@property (nonatomic,assign)NSInteger synchronizedTickets;- (void)syncronized{

2017-07-08 14:50:47 787

原创 iOS 多线程安全之产生原因

多线程 争抢 资源 出现数据访问不正常 的bug

2017-07-08 14:30:40 361

原创 iOS NSCopy 和 NSMutableCopy

主要 原则是:Copy  可变对象  A   生成 一个 不可变的 B   Copy  不可变对象 C 不会生成新的对象 只是浅拷贝 拷贝指针  MutableCopy  不论是 可变还是 不可变的 对象 都生成 一个可变的 新的 对象 。

2017-07-07 17:54:40 536

原创 iOS Block 中 循环引用的解决

前言: 在iOS 中使用block 时 ,如果稍微不注意,则很容易 导致 循环引用 导致内存泄漏 二者都无法释放 。出现内存泄漏。#import typedef void (^EOCNetworkFetcherCompletionHandler)(NSData *data);@protocol  EOCNetworkFetcherDelegate;@in

2017-07-06 11:14:40 872

原创 iOS Block 和 代理的 对比

在我的另一篇博客  频繁调用代理方法优化  中我们讲到 使用代理模式。这节我要使用block 来实现同样的效果但是可以发现 其中的 差别 和 优劣。这两种方式都广泛的应用于 apple 的框架中。构建类 EOCNetworkFetcher#import typedef void (^EOCNetworkFetcherCompletionHandler)(NSData *

2017-07-06 09:17:50 737 1

原创 iOS Block 介绍

前言 :Block 和GCD  是 iOS  多线程 编程的核心 ,它们是 一并引入的 ,Block 是一种可以在 C C++,Objective-C 当中使用的 语法闭包。开发者 可以将 代码像对象 一样传递。 令其在不同的 环境 下运行。还有一个很关键,就是 Block 在定义的范围内 可以访问到其中全部变量。 GCD 基于 dipatch queue .开发者将 线程排入队列中,由GCD 负

2017-07-05 19:55:01 253

原创 iOS 通过协议提供匿名对象

应用场景:  有时对象类型 并不重要,重要的是 对象有没有实现某些方法,在此情况下级可以使用 匿名类型 来表达这一概念。例子如下:#import @protocol EOCDatabaseConnection;@interface EOCDatabaseManager :NSObject+ (id)sharedInstance;

2017-07-05 01:10:28 1214

原创 iOS 中 Class-continuation 的使用

Objective-C 动态消息系统的工作方式 决定了 其 不可能实现真正的私有方法或者私有变量。 因为我们在运行时的时候都可以提取 出来。 但是 即使如此 ,我们最好只把确实需要对外公布的那部分内容公开,这种 不需要对外公布的 就使用 class-continuation 来实现。 笔者 总结有 四种场景下使用。尤其是在写 SDK 等情况下 一种 隐藏你不想被外部知道的类 二种情况: 使用 了O

2017-07-04 23:08:43 672

原创 iOS 分类增加属性

对于分类中 增加属性  我的建议是  如果是只读属性 那么可以在分类中使用 ,如果是可变属性 最好在 primary Class 中使用;不要在分类中使用。代码如下:创建类 EOCPerson  。增加分类 分类中有属性#import "EOCPerson.h"@interface EOCPerson (AddProperty)@property (nonato

2017-07-04 17:42:15 467

原创 iOS 分类 使用注意事项

分类的 使用 基于 Objective-C 高度的动态性 。应用场景:一:  大部分场景下我们 拓展一个 类的功能 并且 希望在用到的时候 秩序引入头文件 或者 直接放入预编译文件 就能使用。         例如:         #import @interface NSArray (ToJSONString)- (NSString *)toJSONStri

2017-07-04 10:24:23 399

原创 iOS 代理模式频繁调用代理方法的优化

前言: 对于代理模式 的应用大家应该都很熟悉。比如: 发起一个网络请求对象 requester , requsester 的代理 设置成 某个特定的 controller ,如果 请求成功返回数据 controller 刷新页面 。如果请求失败又返回其他的 等等。而在 代理模式中 requseter 经常判断 它有没有设置代理  其次它的代理是否响应代理的方法。 因为有很多代理方法 是option

2017-07-03 16:56:23 2293

原创 iOS 使用全能的初始化方法

使用全能的初始化方法

2017-06-29 08:19:55 885

空空如也

空空如也

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

TA关注的人

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