Object-C
劉胡來
这个作者很懒,什么都没留下…
展开
-
YYModel源码解读
YYModel 是一个非常优秀的数据转模型,模型转字典与JSON串的库。而且代码量非常少。可见作者架构,抽象,对OC理解已经到了一个很高的高度。希望站在巨人的肩膀上有一天自己也能达到。YYModel 库结构类含义YYClassInfo类信息YYModel管理头文件,使用过程中引入这一个即可NSObject+YYModel顶级类添加转换接口,方便进行转换字典数据转换为对象,将如下字典数据映射到相应的模型上,示例代码如下:字典数据:NSDiction原创 2020-08-08 18:14:40 · 517 阅读 · 0 评论 -
Object-c基本排序(快排,直接选择,直接插入)
直接插入排序算法思想:插入排序首先考虑数组的前两个元素,即data[0]与data[1],如果次序颠倒了,就交换。然后考虑data[2],将其插入到前面已经排序好的位置上,依次到最后一个元素为止。直接插入排序代码如下:-(void)insertSort{ printf("直接插入排序之前数组结果为:\n"); [self.array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){ .原创 2020-05-14 18:17:54 · 272 阅读 · 0 评论 -
Object-c 二叉树的遍历(前序、中序、后序以及非递归遍历)
二叉树的结构二叉树是树的特殊形式,它包含结点值(可空),左孩子结点(可空),右孩子结点(可空)。空树即三者均为空,当任一结点只有左孩子或右孩子时,这颗树的结构就与链表类似了。定义一个二叉树的结点代码清单如下:#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface TreeNode : NSObject@property(nonatomic,assign) NSInteger value;@pro.原创 2020-05-12 21:01:00 · 11895 阅读 · 0 评论 -
Object-C 栈的应用实现两个大数相加
对于两个非常大的数,如1233333333333333333333333333+9090909090909090909090090909909090909090909090是无法直接相加的。因为已经超过了整型变量的限制可以使用下面代码获得基本类型在运行平台的存储范围:NSLog(@"72----------byte:%ld max :%ld min:%ld",sizeof(NSInteger),NSIntegerMax,NSIntegerMin);为了解决这个问题,可以将这种非常大的数据看成.原创 2020-05-11 16:46:48 · 356 阅读 · 0 评论 -
Object-c 符号匹配的实现
基本思想:对于读入的字符串,按顺序依次读取一个字符,如果该字符为左分隔符,则将其存入栈中。如果发现一个右分隔符,则与栈中弹出的元素相比较。如果二者相互匹配,则继续处理将标志match修改为true。反之中断处理并提示出错同时将标志macth修改为fasle。到达字符串末尾时检测栈是否为空与标志的状态得到匹配的最终结果BOOL result = stack.isEmpty() && 核心代码如下:-(BOOL)match:(NSString *)str{ BOOL.原创 2020-05-11 14:49:00 · 227 阅读 · 0 评论 -
Object-c 实现迷宫
关于本例子中用到的栈结构请参看:https://www.jianshu.com/p/e535df1a86d8迷宫分析:迷宫通常是用一个二维数组来表示,通路以0表示,不通以1表示,出口位置以e表示,起点为s表示(如下图所示)。1111111110011000e1100s11111111程序中使用1个栈与一个与迷宫数组规格一样的数组,一个用来有存储下一步待走的索引,以上图为例当前s在二维数组中的索引..原创 2020-05-10 19:54:59 · 177 阅读 · 0 评论 -
Object-c 实现一个栈
栈释义栈是一种线性数据结构,存储以及查找数据时只能访问栈的一端。类似于餐厅的盘子,新盘子放到这一叠盘子最上面,取的时候也是从最上面开始。最后放的盘子的也是最先被取走的那个。因此栈称为后进先出(Last in First Out )。下列演示了一系列的栈的操作:栈中至少有一个元素的时候才能取出,否则应当给予空栈的提示。只有空间足够的时候才能再添加一个元素,否则应当给予栈满的提示。因些根据这些状态对于栈而言通常操作包括:栈空判断栈满判断弹出栈顶元素入栈操作本例使用数组实现.原创 2020-05-10 18:19:04 · 198 阅读 · 0 评论 -
object-c 队列的两种实现方式(数组+链表)
队列是一个简单的等待序列,入队(新添加)的元素放在尾部,出队(删除的元素)从第一个开始。队列是先进先出结构(First In First out)构造一个队列通常需要包含以下几个接口初始化,这个过程用来设定队列的大小。入队出队判断队空判断队满实现方式一:数组实现例:有一个序列 1,2,3,4,5依次入队。在队列的表现形式如下:初始时,假设队列空间大小为5。1入队时:|1|0|0|0|0|2入队时:|1|2|0|0|0|3入队时:|1|2|3|0|0|4入队时:|.原创 2020-05-09 17:15:23 · 821 阅读 · 0 评论 -
Object-c单链表的操作
如果一个节点指向另一个节点的指针作为数据成员,那么多个这样的结点可以连接起来用一个变量能够访问整个节点序列。这样的节点序列就是最常用的链表实现方法。链表是一种由节点组成的数据结构,每一个节点都包含某些信息及指向链表中的另一个结点的指针。如果序列中的节点只包含后继节点的链接,该链表则称为单向链表。链表包含两个数据成员:info 与 next。info用于存储数据,next用于将节点链接起来...原创 2020-05-07 15:29:38 · 270 阅读 · 0 评论 -
IOS 深拷贝与浅拷贝
IOS 深拷贝与浅拷贝转载 2018-12-08 14:13:04 · 192 阅读 · 0 评论 -
IOS中使用GCD与信号量机制实现读者写者(读者优先)
一、读者写者问题是操作系统中非常经典的线程同步问题,像jdk中有读写锁用来处理这类问题。在读者写者模式中又有几种不同的同步模式,如:读者优先 式的读者写者类型写者优先 式的读者写者类型公平竞争 式的读者写者类型但不管是哪种类型,在处理 这个问题时都遵循下列几个互斥条件,否则会出现“假死”即都处于等待,或出现脏数据问题。允许读者–读者之间同时执行读操作临界资源不允许写者–写者...原创 2018-11-01 15:27:44 · 19801 阅读 · 0 评论 -
IOS多线程使用GCD与信号量实现生产者与消费者模式
一、原理的简述 在生产者消费者模式当中,首先需要分清在这个模式当中有哪些角色?各角色分别担任什么职责与它们之间的关系如何?角色之间是在保证数据的准确性的情况下如何通信(同步数据)的?假设现在有一个这样的情形:有两个人共同访问一个容量有限的仓库,这2个人,其中一个是生产鞋子的,另一个是售卖鞋子,他们共同使用一个仓库。在使用这个仓库之前,这2人之间需要建立一种规约,即:1...原创 2017-07-16 11:21:21 · 16772 阅读 · 0 评论 -
oc 实现斐波那契数列-- 求兔子数量
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?NSMutableArray *fbArr = [[NSMutableArray alloc] init]; [fbArr addObject:[NSNumber numberWithInteger:1]];//原创 2016-06-15 17:23:20 · 1197 阅读 · 0 评论 -
Object-c 观察者模式
观察者模式:具体的定义这里暂且不说了,书上有,只说说我个人的理解。理解一:观察者模式角色分析: 书上有角色分析如下: ● 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者原创 2017-07-20 20:31:17 · 9007 阅读 · 0 评论 -
object-c 策略模式
策略模式的定义,《HeadFirst》这本书,定的比较详细,此文不作过多描述。对于策略模式,将从下面几个方面进行分析:方面一:策略模式和适用的场景。1.类中定义了很多条件判断语句来进行不同的选择。2.不想把类中的具体细节,数据结构暴露给调用者。这种说法好似放之四海而皆准,太过朦胧,有点雾里看花。下面使用一个常见的例子来说明。以生活中面试为例:一个公司有不同的岗位(C原创 2017-07-21 14:26:01 · 8897 阅读 · 0 评论 -
IOS仿支付宝首页滑动效果
项目来源翻译大神的swift 本版为objectc版本, 大神地址: 这里写链接内容一.效果图如下: 没什么逻辑可讲述的,直接给源码吧://// ViewController.m// ZFBHome//// Created by 刘xx on 2018/6/12.// Copyright © 2018 liuxx. All rights reserved....翻译 2018-06-13 13:39:47 · 5267 阅读 · 0 评论 -
IOS 滚动列表的分组功能UICollectionView
1.惯例 效果图奉上: 滚动列表的Section与Row分析(UICollectionView UITableView)一个section 里面可以有多个row ,正是这个特性才能够达到分组效果3.1 组头视图 对应的接口为: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSectio...原创 2018-06-13 15:23:11 · 1306 阅读 · 0 评论 -
IOS 控件系列---使用绘图实现简易滑块条
1.惯例 效果图奉上: 滚动列表的Section与Row分析(UICollectionView UITableView)一个section 里面可以有多个row ,正是这个特性才能够达到分组效果3.1 组头视图 对应的接口为: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSectio...原创 2018-06-14 11:36:13 · 582 阅读 · 0 评论 -
IOS工具类--本地沙盒文件基本操作
本类提供在本地文件的读写、判断等操作:/* 一:a.Documents文件夹,主要用来存储一些重要的信息,比如用户资料,程序的配置文件,聊天记录等等 .Documents中存储的信息会随着iTunes同步到电脑备份或者是iCould开发会同步到云端.该文件夹下不可存太大的内容,比如视频等.上传时会被拒掉. b.Caches主要存储一些缓存文件,比如视频缓存,音频缓存或者...原创 2018-06-20 14:31:29 · 860 阅读 · 0 评论 -
Object-c 使用objc_property_t runtime机制遍历获取类的所有属性
本文没什么分析之处,需要注意的是,递归查找父类属性,直接给出源码:#import &amp;lt;Foundation/Foundation.h&amp;gt;/** * 遍历所有类的block(父类) */typedef void (^ClassesEnumeration)(Class c, BOOL *stop);@interface ClazzAttrMgr : NSObject...原创 2018-07-20 16:39:10 · 726 阅读 · 0 评论 -
Object-c Block分析
本文是来自一位大神的分析博客,俺找不到他的博客地址了: 代码记录下来当作 自己的笔记吧//// main.m// BlockDemo//// Created by liuxiaobing on 2018/7/25.// Copyright © 2018 liuxiaobing. All rights reserved.//#import <Foundatio...翻译 2018-07-26 10:44:38 · 223 阅读 · 0 评论 -
Object-c并发三曲---NSOperation的总结
//// ViewController.m// MultiThread//// Created by liuxiaobing on 2018/7/27.// Copyright © 2018 liuxiaobing. All rights reserved.//#import &quot;ViewController.h&quot;#import &quot;CustomNSOperation.h&quot;...原创 2018-07-27 16:03:21 · 238 阅读 · 0 评论 -
oc 中代码块中局部变量与全局变量、全局静态变量
//1.使用typedef 来使用代码块 //static double a = 10,b = 20; //静太态全局变量 //double a = 10,b = 20; //非静太态全局变量 typedef double(^codeBolck)(void); double原创 2016-06-03 19:37:19 · 802 阅读 · 0 评论