- 博客(69)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 利用liyfmdb框架,实现本周,本月,本日,本季度,本年的sqlite查询
需求:查询本地数据库,实现本周,本月,本日,本季度,本年的查询,并实现分页效果,代码是用的自己的lyjfmdb进行的数据库查询代码 //MARK:获取巡检离线数据 func getoffSpaceExam() { let examModelList = ExamModel()
2017-02-17 17:08:14
521
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 封装fmdb,增删改查只需一行代码
代码地址: swift 版本:点击打开链接oc版本:点击打开链接1.项目上需要离线操作,特此研究fmdb,并写下lyjfmdb框架。改框架优点:(1)一行代码实现增删改查(2)包含事务,执行多局sql,出现问题,回滚回去(3)讲查询到的结果自动封装成model(4)model类创建table,model类属性支持number,int,string,float,以及PrimaryKey(自动增长),...
2017-02-15 22:14:53
3359
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 swift3.0 包含年月日十分 时间选择器的实现
相信很多app需要显示年月日时分,但是系统自带的datapicker选择时分后没有年月,故需要这样的项目上不需要显示秒,所以隐藏了秒,需要显示秒的同学,可以参照代码隐藏即可效果图:view代码://// LYJDatePicker02.swift// MyswiftDemo//// Created by Liyanjun on 2017/2/8.//
2017-02-08 12:09:11
3736
原创 iOS 底层解析weak的实现原理
http://www.cocoachina.com/ios/20170328/18962.html文中的NSObject.mm下载地址为objc源码objc4-723中的NSObject.mm文件objc4-723源码
2018-10-21 15:22:47
515
原创 消息转发与NSProxy
消息转发 消息转发步骤 调用resolveInstanceMethod:方法 (或 resolveClassMethod:)。允许用户在此时为该 Class 动态添加实现。如果有实现了,则调用并返回YES,那么重新开始objc_msgSend流程。这一次对象会响应这个选择器,一般是因为它已经调用过 class_addMethod。如果仍没实现,继续下面的动作。 调用forw...
2018-09-11 09:20:26
1002
原创 设计模式之责任链
责任链模式概念及目的也称职责链模式 避免将一个请求的发送者与接收这耦合在一起, 让多个对象都有机会处理请求. 将接收请求的对象连接成一条链, 并且沿着这条链传递请求, 直到有一个对象能够处理它为止 责任链模式可以把发送者和接收者进行解耦合,发送方只需把消息发送出去即可,接收者负责对消息进行处理,在工作中,有时候我们可能会遇到这样的情况, 你出差了或者你加班了, ...
2018-08-14 17:10:45
212
原创 组件化研究01git使用、cocoapods的机制以及.spec文件
1.git的基本使用指令git init 初始化git仓库git add . 添加当前文件夹下的所有文件git status 显示状态git commit 提交代码git commit ...
2018-08-13 19:34:13
215
原创 CALayer及其子类以及UIBezierPath、CABasicAnimation
CALayerLayer是在3D空间中的2D平面。Layer管理的几何(例如rotate,transfrom),内容(image等),和可视属性 (backgroundColor,alpha)等信息。Layer主要通过管理bitmap来维护自己的状态信息,从这一点上来说,Layer可以看作 对象模型,因为他们主要用来管理数据。Layer是基于bitmap的,它会捕获View要呈现的...
2018-08-02 15:22:44
239
原创 多线程研究
什么是多线程 1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务原理同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象优点能适当提高程序的执行效率能适当提高资源利用率(CPU、内存利用率)缺点创建...
2018-06-27 19:31:37
283
原创 自定义KVO(探索KVO底层本质)
KVO底层实现原理KVO是基于runtime机制实现的当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制如果原类为Person,那么生成的派生类名为NSKVONotifying_Person每个类对象中都有一个isa指针指向当前类,当一个类对象的第
2018-01-29 09:45:53
267
原创 设计模式04之观察者模式
概念观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。类UML图使用就是我们常用的通知和kvo方式
2018-01-25 17:47:22
129
原创 设计模式03之适配器模式
概念适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 适配器模式有两种:类适配器、对象适配器 1.类适配器: 适配器是继承自适配者的 2. 对象适配器 : 适配器是引用适配者的类适配器 对象适配器 demo需求说明,做一个适配器适配人民币和美元
2018-01-25 16:12:32
218
原创 设计模式02之桥接-工厂-享元模式
1.桥接模式定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。原理抽象层与实现层相分离, 抽象层定义了供客户端调用的抽象接口, 实现层提供了具体的逻辑. 实现类的引用被封装到抽象层的实例中,桥接就形成,降低耦合性理解 原先一个类型的电视机对应一个遥控器,利用桥接模式就是把每个遥控器共有的部分抽取出来,定义遥控器特点 将依赖具体的实
2018-01-24 18:51:00
359
原创 SDWebImage初步学习以及缓存学习
SDWebImageUML图分析 SDWebImageManager是管理的核心类,他聚合了SDWebImageManagerdelegate SDWebImagePrefetcher是预下载的,SDWebImageManager作为一个变量manager聚合在SDWebImagePrefetcher,并且聚合了变量为delegate的SDWebImagePrefetcher
2018-01-23 16:33:38
266
原创 架构研究--策略模式
概念定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也称为政策模式目的 算法和对象分开来,使得算法可以独立于使用它的客户而变化我们经常可以看到一些不成熟的代码,在viewcontroller中,写了好多ifelse,使得controller很冗长,并且不方便阅读。为了解耦结构 定义一个抽象类,定义
2018-01-19 17:22:48
465
原创 runloop实战应用——加载高清大图
问题描述在用tableVIew或者scrollView加载多张高清大图的时候,页面会卡顿。如下图 原因runloop在一次渲染中,需要渲染十几张高清大图,所以卡主了解决思路每次Runloop循环,只渲染一张大图!! 1.监听Runloop的循环!! 2.将加载大图的代码!放在一个数组里面!! 3.每次Runloop循环,取出一个加载大图的任务执
2018-01-18 14:53:58
1920
4
原创 实现定时器功能的几种方式
nsrunLoop GCD RAC NsrunLoop NSRunLoop是IOS消息机制的处理模式 一条线程对应一个RunLoop,主线程的RunLoop默认已经创建好了, 而子线程的需要我们自己手动创建 获取主线程对应的RunLoop对象mainRunLoop/CFRunLoopGetMain( [NSRunLoop mainRunLoop]) 获取
2017-12-22 11:44:51
1519
原创 RAC的常见应用场景
这里写RAC常见的应用场景 1. RAC集合 2. 代替KVO 1. 监听事件 3. 代替通知 4. 监听文本框 5.代理RAC集合RACTupleRACTuple是rac定义的集合,跟数组类似, RACTuple *tuple = [RACTuple tupleWithObjectsFromArray:@[@"aaaa",@"bb",@123,@23434]]; NSStr
2017-12-21 15:59:18
689
原创 RAC初识
简介简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。 RAC在某些特定情况下开发时可以大大简化代码,并且目前来看安全可靠。RAC常见的类RACSignal:信号类 //1.创建信号 /* didSubScr
2017-12-21 15:55:22
269
原创 NSURLSession
简介NSURLConnection在iOS9被宣布弃用,NSURLSession从13年发展到现在,终于迎来了它独步江湖的时代.NSURLSession是苹果在iOS7后为HTTP数据传输提供的一系列接口,比NSURLConnection强大,坑少,好用 默认是挂起的,执行要resumeNSURLSession 的优势NSURLSession 支持 http2.0 协议在处理下载任务的时候
2017-11-21 15:30:34
261
原创 shell学习之cat命令、文件包含、read命令、printf、函数、重定向
cat命令作用查看文件内容连接文件创建一个文件或者多个文件重定向输出到终端重定向到文件语法cat [选项] [文件]案例案例1查看文件内容 cat fileA.sh案例2cat -n fileA.sh -n选项:可以显示文件内容和行号案例3cat -b fileA.sh -b选项:和”-n”类似功能,但是只标记非空白行行号案例4cat -e fileA.sh -e选
2017-11-20 22:23:30
1442
原创 tableview修改selectedBackgroundView的frame
思路selectedBackgroundView的frame无法修改,但可以替换在替换的view上加上view,并设置这个view的frame代码 UIView* selectBackview = [[UIView alloc] init]; selectBackview.backgroundColor = [UIColor clearColor]; UIView*
2017-11-13 14:07:09
520
原创 shell学习数组、基本运算符
数组语法 数组名=(值1 值2 值3…)初始化数组有两种方法 1. 方式一name=("李明" "Andy" "李磊" "james")echo $name打印第一个元素 2. 方式二name=()name[0]="404"name[1]="Andy"name[2]="柚芒子"name[3]="全班最菜"echo ${name[0]} ${name[1]}读取数组 语法结
2017-11-02 00:31:17
263
原创 shell初学习
简介开发者通过shell语音操作系统内核服务。脚本语言,编译静态库 第一个shell1. 创建shell文件 touch hello.sh 2. 编写shell程序#!/bin/bash echo "Hello world" #! 表示约定标记,告诉系统用什么解释器执行这个文件,即是一种体现 这里是常用的bash类型 echo 输出信息 相当于 print3. 修改文件权限权
2017-10-27 21:39:52
272
原创 runtime深入学习
runtimewww.jianshu.com/p/46dd81402f63 在博客基础上补充一些 说到runtime,它是Objective-c里面最核心的技术,被人们传呼的神乎其神,但是感觉有一层神秘的面纱笼罩其上,毕竟使用场景不多,相信大多数开发者都不会熟练的运用。而网络上也有无数的文章来讲解runtime,但是真的非常的乱,非常的碎片化,很少有讲解的比较全面的。基本概
2017-10-18 23:58:43
258
原创 SpriteKit与arkit结合炸弹小游戏
Spritekit介绍http://www.jianshu.com/p/0427dc183ca8游戏介绍点击炸弹,炸弹消失,超过5s没有点击 ,发生爆炸效果图新建项目新建项目选择game 选择spritekit 设置追踪镜头 let configuration = AROrientationTrackingConfiguration()//追踪镜头的位置,只有三个自由度 速度比较快编写核
2017-10-11 14:23:58
513
原创 RSA加密
算法简介 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)
2017-09-30 15:31:30
243
原创 对称加密工具类
头文件 包含终端命令,可以验证加密结果是否正确#import <Foundation/Foundation.h>#import <CommonCrypto/CommonCrypto.h>/** * 终端测试指令 * * DES(ECB)加密 * $ echo -n hello | openssl enc -des-ecb -K 616263 -nosalt | base64 *
2017-09-30 10:21:37
334
原创 指纹识别
iphone 5s 以后推出指纹识别 iOS8.0开放指纹识别 引入系统头文件#import <LocalAuthentication/LocalAuthentication.h>1. 判断版本 //1.判断版本 if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) { //可以使用指纹识别 5S
2017-09-27 15:41:32
323
原创 AR项目实践二:ar直尺
1. 搭载初始代码 这一部分比较简单就不再秒速了import UIKitimport ARKitimport SceneKitclass ViewController: UIViewController { @IBOutlet weak var scenview: ARSCNView! @IBOutlet weak var targetImg: UIImageView!
2017-09-25 18:23:06
1032
1
转载 CABasicAnimation
实例化使用方法animationWithKeyPath:对 CABasicAnimation进行实例化,并指定Layer的属性作为关键路径进行注册。//围绕y轴旋转 CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@”transform.rotation.y”]; 设定动画设定动画的属性和说明属性
2017-09-14 18:22:40
204
原创 从零开始实现太阳公转AR项目(swift)
前言我们一般创建ar项目都是Augumented Reality App,系统会给我们生成一些代码。今天我们我们就从普通的Single View App一步步创建实现ar项目太阳公转ar小项目创建项目这一部分是创建项目、然后创建从一个viewcontroller点击按钮present进入到我们的SunRevolutionViewController。这些比较简单,我就一笔带过 ps 由于用到相机
2017-09-13 12:17:10
1777
原创 散列函数工具类
头文件//// NSString+Hash.h////// Created by liyanjun on 15/11/12.// Copyright (c) 2015年 liyanjun. All rights reserved.//#import <Foundation/Foundation.h>@interface NSString (Hash)#pragma mark - 散
2017-09-11 14:49:34
328
原创 iOS应用层加密相关
网络开发准则 网络开发中不允许传输用户明文隐私数据 在本地不允许保存用户明文隐私数据 替换加密 里面密码本进行替换破解方法蛮力攻击 利用明文和密文蛮力穷尽密钥 26个字母 的密码空间: 26*25*24…3*2*1 = 26! = 2^88字母频率分析 根据英文常用的频率进行分析,比如英文e的使用频率13%等 56~64位:几个小时或者几天破解对称
2017-09-11 14:19:32
384
原创 组件化研究01
简介 组件化将我们这个一个但一的工程分解为各个组件,然后按照某种方式任意组织成为一个拥有完整业务逻辑的工程。原因 耦合性严重 测试不独立 编译速度慢 设计模式的冲突 组件化的优势 组件的独立性 资源重用 高效迭代 配合我们二进制,加快项目的编译速度 组件化应该考虑的问题1. 组件的划分 基础组件 基础配置(宏,常量),
2017-09-11 09:35:38
221
原创 ARKit入门01
简介增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。ARKit是基于AVFoundation框架和CoreMotion框架的所需 A9以上设备 (不支持模拟器)se 6s 6sp 7 7p xcode9 bates,iOS11,xco
2017-09-08 14:52:45
288
原创 XML解析
解析方式DOM MAC提供的解析方法 (Document Object Model ,文档对象模型。解析时需要将XML文件整体读入,并且将XML结构化成树状,使用时再通过树状结构读取相关数据,查找特定节点,然后对节点进行读或写,iOS中无法直接使用 原因:内存开销巨大!可读可写将数据已树形结构加载到内存SAX iOS提供的解析方式 (Simple API for XML,基于事件驱动
2017-09-08 09:42:46
230
原创 NSURLRequest
NSURLRequest缓存策略 NSURLRequestUseProtocolCachePolicy=0 默认缓存策略 NSURLRequestReloadIgnoringLocalCacheData=1 忽略本地缓存数据,直接加载网络数据,每次都是最新数据 应用场景:数据变化比较快非常频繁的APP,彩票 NSURLRequestReturnCacheDataElseLoa
2017-09-07 17:16:27
208
原创 网络状态监测Reachability
Reachability 使用Reachability框架 AFN封装了Reachability,可以用AFNetworkReachabilityManager来监测Reachability描述//发生网络状态发生的通知extern NSString *const kReachabilityChangedNotification;typedef NS_ENUM(NSInteger, N
2017-09-07 15:06:26
232
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人