- 博客(250)
- 资源 (21)
- 收藏
- 关注
原创 Masonry 源码简单解析
Masonry是一个轻量级的用于自动布局的框架,是对系统的自动布局约束的一个封装。Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束。上面是Masonry的类图,从类图中我们来整体的分析Masonry框架的结构。然后再由整体到部分逐渐的细化,窥探其内部的实现细节。masonry框架的类结构根据上面的类图,我们分别看一下框架里面各个类。1、UIView的分类 - V.
2021-07-14 17:28:11
152
原创 Runloop线程常驻
在iOS开发过程中,有时一些花费时间比较长的操作阻塞主线程,导致界面卡顿,那么我们就会创建一个子线程,然后把这些花费时间比较长的操作放在子线程中来处理。可是当子线程中的任务执行完毕后,子线程就会被销毁掉。如果程序中,需要经常在子线程中执行任务,频繁的创建和销毁线程,会造成资源的浪费。这时候我们就可以使用RunLoop来让该线程长时间存活而不被销毁。来个案例,在睡眠时,通过硬件获取数据信息(比如心电信息),开始睡眠时,创建runloop,使得子线程常驻,用于写数据到文件睡眠结束后,退出runl.
2021-07-14 14:53:49
190
原创 源码分析之AFNetworking④UIkit+AFNetworking
如果需要使用AFNetworking的UIKit扩展时可直接在prefix.pch文件中引入,或者在工程的相关文件中引入。1、AFAutoPurgingImageCache :用于缓存图片的类,通过identifier来添加和搜索UIImage协议中添加图片:- (void)addImage:(UIImage*)image withIdentifier:(NSString *)identifier;协议中删除图片- (BOOL)removeImageWithIdentifier:(NSStri.
2021-07-14 09:33:16
192
1
原创 源码分析之AFNetworking③AFSecurityPolicy和AFURLRequestSerialization
首先看一下AFSecurityPolicy的属性:1、https验证模式,默认无,还有证书匹配和公钥匹配@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode;typedef NS_ENUM(NSUInteger, AFSSLPinningMode) {AFSSLPinningModeNone,AFSSLPinningModePublicKey,AFSSLPinningModeCertificate,};
2021-07-13 17:29:28
59
原创 源码分析之AFNetworking ②AFNetworkReachabilityManager
AFNetworkReachabilityManager对象用于监听设备当前连接网络的状态。AFNetworkReachabilityManager提供了4种创建方法:(instancetype)sharedManager; //创建单例(instancetype)manager;//创建实例对象(instancetype)managerForDomain:(NSString *)domain;//根据地址名创建实例对象(instancetype)managerForAddress
2021-07-13 17:16:30
153
原创 源码分析之AFNetworking ①AFURLSessionManager与AFHTTPSessionManager
首先查看afn的结构,如下:可以看到AF分为如下5个功能模块: 网络通信模块(最核心)(AFURLSessionManager、AFHTTPSessionManager) 网络状态监听模块(Reachability) 网络通信安全策略模块(Security) 网络通信信息序列化/反序列化模块(Serialization) 对于iOS UIkit库的拓展(UIKit)一、1.网络通信模块-AFURLSessionManager与AFHTTPSes
2021-07-13 16:35:36
547
原创 Flutter开发之网络请求
项目中展示的大部分数据都是来自服务器,我们需要向服务器请求数据,并且对他们进行解析展示。一. 网络请求的方式在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库。1、HttpClientHttpClient是dart自带的请求类,在io包中,实现了基本的网络请求相关的操作。网络调用通常遵循如下步骤:创建 client.构造 Uri.发起请求, 等待请求,同时您也可以配置请求headers、 body。关闭请求, 等待响应.解码响应的内容..
2021-05-13 17:29:46
535
1
原创 Flutter开发之滚动Widget
移动端数据量比较大时,我们都是通过列表来进行展示的,比如商品数据、聊天列表、通信录、朋友圈等。在Android中,我们可以使用ListView或RecyclerView来实现,在iOS中,我们可以通过UITableView来实现。在Flutter中,我们也有对应的列表Widget,就是ListView。一、ListView1.1、ListView的基本使用ListView可以沿一个方向(垂直或水平方向,默认是垂直方向)来排列其所有子Widget。一种最简单的使用方式是直接将所有需要排列的.
2021-05-11 17:34:39
359
原创 Flutter开发之JSON读取和解析
在开发中,我们经常会使用本地JSON或者从服务器请求数据后回去到JSON,拿到JSON后通常会将JSON转成Model对象来进行后续的操作,因为这样操作更加的方便,也更加的安全。所以学习JSON的相关操作以及读取JSON后如何转成Model对象对于Flutter开发也非常重要。1、 JSON资源配置JSON也属于一种资源,所以在使用之前需要先进行相关的配置。我们在之前使用Image组件时,用到了本地图片,本地图片必须在pubspec.yaml中进行配置:类似的json文件的配置如下:2、.
2021-05-10 17:49:49
1862
1
原创 flutter之布局Widget
为了实现界面内组件的各种排布方式,我们需要进行布局,和其他端不同的是,Flutter中因为万物皆Widget,所以布局也是使用Widget来完成的。Flutter中的布局组件非常多,有31个用于布局的组件。我们没必要一个个全部掌握,掌握最常用的,一些特殊的组件用到时去查文档即可。Flutter将布局组件分成了 单子布局组件(Single-child layout widgets) 和 多子布局组件(Multi-child layout widgets)一. 单子布局组件单子布局组件的含义是其只.
2021-05-08 17:40:03
104
原创 Flutter开发之基础Widget
一、文本Widget在Android中,我们使用TextView,iOS中我们使用UILabel来显示文本;Flutter中,我们使用Text组件控制文本如何展示;1.1普通文本展示在Flutter中,我们可以将文本的控制显示分成两类:控制文本布局的参数: 如文本对齐方式 textAlign、文本排版方向 textDirection,文本显示最大行数 maxLines、文本截断规则 overflow 等等,这些都是构造函数中的参数;控制文本样式的参数: 如字体名称 fontFamily、字体大
2021-05-06 18:06:42
122
原创 Flutter开发之Widget
在 Flutter 中,⼀切的显示都是 Widget 。Widget 是⼀切的基础,作为响应式的渲染,类似 MVVM 的实现机制。我们可以通过修改数据,再⽤ setState 设置数据,Flutter 会⾃动通过绑定的数据更新 Widget 。 所以你需要做的就是实现 Widget 界⾯,并且和数据绑定起来。Widget 分为 有状态 和 ⽆状态 两种,在 Flutter 中每个⻚⾯都是⼀帧,⽆状态就是保持在那⼀帧,⽽有状态的 Widget 当数据更新时,其实是绘制了新的 Widget,只是 State
2021-04-28 17:04:38
123
原创 Flutter开发之Hello World
一、创建项目flutter项目的创建有两种方式:通过命令行创建和开发工具创建。1、命令行创建:flutter create xxx注意:Flutter的名称不要包含特殊的字符,另外不可以使用驼峰标识2、开发工具创建,比如使用Android Studio创建,选择 Start a new Flutter project...
2021-04-28 15:56:18
207
1
原创 Dart的异步
一、Dart的异步模型1.1 Dart是单线程的1.1.1 程序中的耗时操作开发中的耗时操作:在开发中,我们经常会遇到一些耗时的操作需要完成,比如网络请求、文件读取等等;如果我们的主线程一直在等待这些耗时的操作完成,那么就会进程阻塞,无法响应其他事件,比如用户点击事件等如何处理耗时操作?针对如何处理耗时的操作,不同的语言有不同的处理方式。多线程,不如Java、C++,我们普遍的做法是开启一个新的线程,在新的线程中完成这些异步的操作,再通过线程间通信的方式,将拿到的数据传递给主线程。单
2021-04-19 17:24:12
703
原创 Dart学习之库的使用
在Dart中,我们可以导入一个库来使用它所提供的功能。库的使用可以使代码的重用性得到提高,并且可以更好的组合代码。Dart中任何一个dart文件都是一个库,即使你没有用关键字library声明。1、库的导入import语句用来导入一个库,后面跟一个字符串形式的URI来指定表示要引用的库,语法如下:import "库所在的uri";常见的库URI有三种不同的形式来自dart标准版,比如dart:io、dart:html、dart:math、dart:coreimport 'dart:io
2021-04-19 15:09:54
322
1
原创 Dart学习之泛型
泛型就是解决 类、 接口、 方法的复用性、以及对不特定数据类型的支持Dart中的泛型和其他语言差不多,但是Dart中的类型是可选的,使用泛型可以限定类型;使用泛型可以减少很多模板代码。1、为什么使用泛型?String getData1(String val){ return val; } int getData2(int val){ return val; }上面的两个方法分别返回String类型和int类型,我们可以不指定类型,getData(val){ retu
2021-04-19 10:54:36
337
原创 Dart学习之类和对象
Dart学习之类和对象Dart是一个面向对象的语言,面向对象中非常重要的概念就是类,类产生了对象。1、类的定义在Dart中,定义类用class关键字类通常有两个部分:成员(member)和方法(method)类定义的格式:class 类名{ 类型 成员名称l 返回值类型 方法名(参数){ 方法体 }}这里简单地举个例子,写一个Dog类class Dog{ String name; eat(){ print("$name 在吃东西!!别打扰它,小心咬你") }}
2021-04-19 00:55:52
302
2
原创 Dart学习之运算符和流程控制
Dart学习之运算符和流程控制一、运算符除法、整除、取模运算var num = 7;print(num / 3); // 除法操作, 结果2.3333..print(num ~/ 3); // 整除操作, 结果2;print(num % 3); // 取模操作, 结果1;2 ??= 赋值操作当变量为null时,使用后面的内容进行赋值;当变量有值时,使用自己原来的值。var name = null;name ??= "Tom";//name是null,??= 操作符将Tom赋值给na
2021-04-18 23:13:20
66
原创 Dart学习之基础
Dart学习之基础1、main函数main函数是dart 的入口,dart的入口函数是没有返回值的,传递给main的命令行参数是通过List完成的。字面上可以理解List是dart中集合类型;其中每一个String都表示传递给main的一个参数定义字符串的时候,可以使用单引号或双引号;每行语句必须使用分号结尾,很多语言并不需要分号,比如swift、jsmain(List<String> args) { print('Hello World');}2、定义变量2.1明确声明
2021-04-18 22:49:26
157
原创 iOS MOV转MP4
废话不多说,直接上转换代码+ (NSURL *)jjMovConvert2Mp4:(NSURL *)movUrl{ NSURL *mp4Url = nil; AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:movUrl options:nil]; NSArray *compatiblePresets = [AVAssetExportSession exportPrese
2020-05-25 14:38:54
823
原创 iOS 使用UIBezierPath实现不等距曲线图
iOS,关于画线有很多很好的第三方,比如Charts、ECharts等等,但是我没有找到画不等距的,就自己简单的实现了一下。首先看,效果就是描点画线加动画,没有太难的。我自定义了一个LineChartView,和几个模型,具体demo下面会给链接给lineChartview暴露出了几个属性和方法,都有注释在controller里面进行初始化配置setChartView方法self.chartView.y_TextFont = [UIFont systemFontOfSize:14];
2020-05-25 13:49:28
192
原创 iOS提升开发效率-常用代码块
Xcode支持自定义代码段,当输入某个关键字就能提示出某个代码段。把常用的代码段保存下来,绝对对开发效率有很大的提高。一、添加代码块:在Xcode中右键,如下图选择‘Create Code Snippet’,即可创建新的代码块,比如我新建了一个定义block的代码块,保存之后,在需要的地方,输入qblo的时候就会有代码块提示,如下图选中回车后,我们需要的代码块就有了二、常用代码块1.strong/** <#描述#> */@prop..
2020-05-09 10:22:09
289
原创 iOS集成OpenCV,并实现图片马赛克
关于Open CVOpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是...
2020-02-23 03:21:50
1000
原创 运行react-native报错:xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
在 终端执行如下命令sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
2019-02-10 23:32:44
595
原创 ffmpeg音视频编解码的封装
//导入头文件//核心库#include "libavcodec/avcodec.h"//封装格式处理库#include "libavformat/avformat.h"//工具库#include "libavutil/imgutils.h"//视频像素数据格式库#include "libswscale/swscale.h"#include "libswresample/swresample.h"...
2018-03-30 00:10:14
2251
1
原创 FFmpeg的基础知识
第一点:一个视频播放流程? 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步 通常看到视频格式:mp4、mov、flv、wmv等等… 称之为:封装格式 第二点:视频播放器 ...
2018-03-29 22:48:55
1000
原创 ReactiveCocoa的使用
### 1.ReactiveCocoa常见操作方法介绍。* 1.1 ReactiveCocoa操作须知 * 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,因此只要继承RACStream就有了操作处理方法。* 1.2 ReactiveCocoa操作思想 * 运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序...
2018-03-28 10:40:24
516
原创 Shell脚本下载和编译ffmpeg
1、首先编写Shell脚本下载ffmpeg,命名为ffmpeg-download.sh:#!/bin/bash#库名称source="ffmpeg-3.4"#下载这个库if [ ! -r $source ]then#没有下载,那么我需要执行下载操作 echo "没有FFmpeg库,我们需要下载….."#下载:怎么下载?#"curl"命令表示:它可以通过Http\ftp等等这...
2018-03-23 00:37:16
847
原创 Python模块
Python 模块Module,是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。下例是个简单的模块 support.py:support.py 模块:def print_func( par ): pri...
2018-03-14 15:14:45
1243
原创 Python之高级特性
#!/usr/bin/python# -*- coding: utf-8 -*-# 高级特性# 掌握了Python的数据类型、语句和函数,基本上就可以编写很多有用的程序了。# 比如构造一个1,3,5,7,...,99的列表,可以通过循环实现Li = []n = 1while n <= 99: Li.append(n) n = n + 2# print Li# 取list得前一半的元素,也可以...
2018-03-07 15:00:55
204
原创 Python的函数
#!/usr/bin/python# -*- coding: utf-8 -*-def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('bad operand type') if x>= 0: return x else: return -x# print "请输入x的值"# a = raw_input(...
2018-03-06 14:16:24
289
原创 Shell脚本对数据库的操作
#!/bin/bash## 1、登录数据库MYSQL=$(which mysql)# $MYSQL -u root -p# 2、显示数据库列表# -e 表示执行数据库命令# $MYSQL -u root -p -e "show databases"# 3、查询数据库表# $MYSQL -u root -p -e "
2017-12-20 00:15:12
1609
原创 数据库SQL语句
# # 1、连接数据库->登录数据库# 2、退出数据库# exit# 3、显示所有数据库# show database# 4、进入数据库# use db_test# 5、增、删、改、查# 5.1删除数据库# drop database db_test;# 5.2创建数据库# create databas
2017-12-13 06:39:28
291
原创 Linux 命令大全
1、文件管理catchattrchgrpchmodchowncksumcmpdiffdiffstatfilefindgitgitviewindentcutlnlesslocatelsattrmattribmcmdelmdirmktempmoremmovemread
2017-12-12 22:00:46
339
原创 Shell流程控制
#Shell流程控制#if else #if语法格式# if condition# then# command1# command2# ...# fi# 末尾的fi就是if倒过来拼写#if else语法# if condition# then# command1
2017-12-10 08:22:30
252
原创 Shell printf命令
#Shell printf命令#printf命令模仿C 程序库里的printf()程序#因此使用printf的脚本比使用echo移植性好# printf使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以指定字符串宽度、左右对齐方式等。默认printf不会像echo自动添加换行符,我们可以手动添加\n# printf 命令的语法:
2017-12-09 20:49:24
410
原创 Shell基本运算符
# Shell基本运算符# Shell支持多种运算符:# 算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符# 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常见。# expr是一款表达式计算工具,使用它能完成表达式的求值操作。val=`expr 2 + 2`echo "两数之和为:$va
2017-12-08 23:15:12
291
原创 Shell变量及字符串的操作
# Shell脚本运行的方法 1、 chmod +x ./xxx.sh -> ./xxx.sh ()# 2、/bin/sh xxx.sh /bin/php test.php# 3、也可以在终端上 # !/bin/bash然后就可以在终端敲Shell语句了# echo 'Hello'# Shell变量:# 定义变量
2017-12-08 23:13:12
3862
原创 Node.JS 介绍及配置
简单的说 Node.js就是运行在服务端的 JavaScript。Node.js是一个基于Chrome JavaScript运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。Node.js的安装配置教程:http://www.runoob.com/node
2017-11-28 10:09:10
273
原创 Shell语言
Shell 是一个用 C语言编写的程序,它是用户使用 Linux的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh是第一种 Unix Shell,Windows Explorer是一个典型的图形界面 Shell。1
2017-11-21 01:03:46
3991
iOS 开发Xcode代码块.zip
2020-05-09
The Swift Programming Language中文完整版(CocoaChina精校).pdf
2016-08-08
微信支付的demo
2016-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人