Home
GNR
Cancel

001-浅拷贝和深拷贝的区别?

浅拷贝:只是拷贝了指针 深拷贝:指针和对象本身都进行了拷贝 在OC中常见的,不可变数组和可变数组的copy和mutableCopy分别是浅拷贝还是深拷贝呢?通过以下示例代码可以得出结论: 结论: 1.对于不可变对象而言,copy便是浅拷贝,mutableCopy是深拷贝 2.对于可变对象而言,copy和mutableCopy都是深拷贝,但是copy出来的对象是不可变的,而mutable...

002-实现“简单单例模式”的几种方法?

首先不管哪种写法都要首先声明一个静态单例对象,如下所示: static GNRSingleModel *instance = nil; 其次就是创建单例的时机了,常用的有以下几种写法: 一、简单写法(线程不安全) + (instancetype)sharedInstance{ if (instance==nil) { instance = [[GNRSing...

链式编程

先看个例子 - Masonry(布局框架) Masonry简介:Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。 先来看看Masonry一个使用的小例子: // ------- Masonry ------- // 创建控件 UIView *redView = [[UIV...

工厂模式

工厂模式: 简而言之,假如有这样一个汽车工厂,不管你需要那种品牌的车,都可以为你生产出来。 好处是啥?     因为这样做太酷了! 实现这个工厂! 首先,定义一个汽车工厂类,取名LYCarFactory: .h 中的内容: @interface LYCarFactory : NSObject //每辆车都遵守这个代理 @property (nonatomic,weak)...

响应式编程

响应式编程 假设有一个父类Person,它有个属性age,我们创建一个它的子类 LYKVONotifying_Person。 我们给所有类一个扩展方法: - (void)ly_addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)option...

合并UIImage

如何合并两个UIImage生产一个UIImage? 1、准备两个UIImage UIImage * image1 = [UIImage imageNamed:@"1.jpg"]; UIImage * image2 = [UIImage imageNamed:@"2.jpg"]; 2、指定合并后UIImage的大小 CGSize size = CGSizeMake(400,...

函数式编程

函数式编程:把每个操作都写作一连串的函数或者方法,使代码高度聚合,便于管理。正因为每次都可以调用自己的方法,所以每次都返回自己。 例子:设计一个计算器Calulator: Calulator属性和方法: @interface Calulator : NSObject @property (nonatomic, assign) BOOL isEqule;//是否等于 @prop...

如何获取某一坐标的静态地图(静态图片)?

许多聊天软件都可以发送位置,然后直接把MapView放在cell上显示,通常会造成加载缓慢,内存吃紧,进而卡顿等诸多性能问题。那么除了使用MapView动态加载还有什么办法呢?当然是搞一张图片最好了! 其实方法很简单,我们可以通过第三方地图的开放API,GET请求获取到。例如高德的静态地图URL如下所示: https://restapi.amap.com/v3/staticmap...

经典的外卖列表(双Table联动)

我们经常使用美团外卖、饿了么、口碑等外卖软件点餐,几乎所有的外卖软件所展示的商品类别都无一例外,采用双列表的形式呈现商品。 我们拿美团外卖为例,截图如下: 暂时忽略头部视图,只关注下面的商品分组列表。 思路:         在开始之前,我们首先应该思考其实现的流程和可能遇到的问题!首先映入眼帘的是左侧的商品分类列表,以及右侧的分区展现的商品列表。所以: 我们至少...

常见排序算法介绍(二)

归并排序(Merge Sort) 原理: 归并排序是一种分治算法,将列表不断分割为更小的子列表,然后将这些子列表按顺序合并以获得排序结果。 Python 实现: def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left_half = arr[:mid...