自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ffmpeg命令

视频去水印参数x,y logo的位置w,h logo的宽高show当设置为1时,将在屏幕上绘制一个绿色矩形,以简化查找正确的x、y、w和h参数。默认值为0。例:ffmpeg -i logo.mp4 -filter_complex “delogo=x=100:y=100:w=100:h=100:show=1” delogo.mp4不带绿框:ffmpeg -i logo.mp4 -filter_complex “delogo=x=100:y=100:w=100:h=100” delogo.m.

2021-04-02 21:35:55 154

原创 iOS KVC和KVO

一. KVCKVC也就是key-value-coding,即键值编码,最常见的两种用法就是:1). 对私有变量进行赋值,同样的也可以通过它进行取值对某一个属性进行赋值,可以不用加下划线,它的查找规则应该是:先查找和直接写入的字符串相同的成员变量,如果找不到就找以下划线开头的成员变量;[p setValue:@170 forKey:@"height"];[p valueForKey:@"height"];forKeyPath是包含了 forKey这个方法的功能的,甚至 forKeyPath

2020-05-12 11:39:29 933

转载 iOS 循环引用

转载自: https://www.jianshu.com/p/aa8d3e3ea4f2介绍:在Objective-C的开发中循环引用(retain cycle)是指两个(或多个)对象之间产生了互相强引用而导致这些对象因为引用计数(reference count)始终大于等于1而不会释放,最后导致内存泄漏(memory leak)的状况,可以用下图描述。情况一:delegatedelegate 是iOS中开发中最常遇到的循环引用,一般在声明delegate的时候都要使用弱引用 weak或者assig

2020-05-11 20:24:48 581

原创 iOS #include与#import的区别、#import与@class 的区别

#include和#import 其效果相同,都是导入类中定义的行为(方法);#import 不会引起交叉编译,确保头文件只会被导入一次;@class 表明只定义了类的名称,而具体类的行为是未知的,一般用于.h 文件@class比#import编译效率更高。此外@class和#import的主要区别在于解决引用死锁的问题。...

2020-05-11 20:16:35 358 1

原创 iOS define和const变量有什么区别?

define在预处理阶段进行简单的替换,const在编译阶段使用define不做类型检查,仅仅展开替换,const有数据类型,会执行类型检查define不分配内存,仅仅展开替换,const会分配内存define不能调试,const可以调试define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段,只有一份copy,效率更高define可以定义一些简单的函数,const不可以用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#..

2020-05-11 20:14:05 164

原创 iOS关键字 const/static/extern

const(用来修饰右边的基本变量或指针变量, 被修饰的变量只读, 不能被修改)const int a; //a是一个常整型数int const a; //a是一个常整型数const int *a; //a是一个指向常整型数的指针(整型数不可修改,但指针可以)int * const a; //a是一个指向整型数的常指针(指针指向的整型数是可以修改,但指针是不可修改)int const* const a ; //a是一个指向常整型数的常指针 例如:int const a = 10;//因

2020-05-11 20:09:55 112

原创 Xcode快捷键

代码折叠 :鼠标选中方法中的左半部分花括号{ ,同时按下 option键、command 键、右下角指向向左的键代码向下移动:选中代码,同时按下 option键、command键、中括号右半部分键】即可代码向上移动:选中代码,同时按下 option键、command键、中括号左半部分键【 即可Xcode右边的工具视图区域隐藏或者显示:选中Xcode,同时按下option键、command键、数字0键 即可显示或者隐藏Xcode左边的导航视图区域隐藏或者显示:选中Xcod..

2020-05-11 20:06:18 398

转载 iOS里的内存管理

前言什么是内存管理?是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。我们本篇学习的就是iOS开发中是如何对内存进行管理的。其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。内存分配首先既然我...

2020-04-17 09:49:34 336

原创 iOS UIView 和 CALayer 的关系

UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。需要设置UIView的圆角和边框等操作时,我们就会使用view.layer,即CALayer,那么两者之间到底有什么关系呢?UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。UIView不具备显示功能,拥有...

2020-04-16 13:26:23 535

原创 Python3.0 requests网络请求

import requestsdata = { 'deviceId': 123 }headers = { 'Cookie': 'avfdafdfsf' }r = requests.post('http://******', data=data, headers=headers)response = r.json()

2020-04-12 13:52:21 232

原创 Python pymysql的使用

import pymysql# 打开数据库连接db = pymysql.connect(localhost, user, pwd, "orders")# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()# SQL 查询语句eventId = '123456'sql = "select * from so where doorEven...

2020-04-12 13:50:52 127

原创 Python程序打包

1. 用Py2app打包(Mac)py2applet --make-setup myfile.py命令创建一个setup.py的打包脚本文件python3 setup.py py2app命令运行打包脚本,生成app文件setup.py文件说明(可以直接在EasyIcon网站下载icns格式的图标):# 需要打包的其它文件DATA_FILES = ['Times New Roman Bol...

2020-04-12 13:48:52 284

原创 iOS Block

iOS Block详解在block内部可以访问block外部的变量,但这是一个新的内存空间变量- (void)test { int m = 10; NSLog(@"m-->%p", &m); //m-->0x7ffee666c16c void (^myBlock)(void) = ^() { NSLog(@"block m-->...

2020-04-12 13:44:22 130

原创 iOS 堆与栈

栈区(Stack)(先进后出)就想象成:客栈,上下班准时,有规律,不用住宿的游客管理,由客栈内部人管理。由编译器自动分配释放,存放函数的参数值,局部变量的值,操作方式类似于数据结构中的栈。只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出堆区(heap)(先进先出)就想象成:堆在一起的东西,需要我们自己去整理。一般由程序员分配释放, 若程序员不释放,程序结束时...

2020-04-12 13:40:43 263

原创 iOS GCD(二) dispatch_group 队列组

有时候我们会有这样的需求:分别异步执行2个耗时任务,然后当2个耗时任务都执行完毕后再回到主线程执行任务。这时候我们可以用到 GCD 的队列组。使用场景: 同时上传多个图片,所有图片上传完成之后去请求服务器上传图片地址。dispatch_group_notify原理:使用函数dispatch_group_create创建dispatch group,然后使用函数dispatch_group_a...

2020-04-12 13:36:38 1029

原创 iOS GCD(一)

创建//全局队列,一个并行的队列dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)//主队列,主线程中的唯一队列,一个串行队列dispatch_get_main_queue()//自定义队列//串行队列dispatch_queue_create("com.top...

2020-04-12 13:32:28 453

原创 iOS UITableViewCell高度自适应

// iOS8之后,我们只需要设置这两句代码之后,即可放心的往cell的控件里面加上内容,cell会根据内部所有控件的高度动态的计算自己的高度从而显示出来tableView.estimatedRowHeight = 44.0f;//推测高度,必须有,可以随便写多少tableView.rowHeight =UITableViewAutomaticDimension;//iOS8之后默认就是这个值...

2020-04-12 13:28:39 309

原创 git常用命令整理

1.首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中。 & git config --global user.name "你的名字或昵称" & git config --global user.email "你的邮箱"然后在你的需要初始化版本库的文件夹中执行:git init git remote...

2020-04-12 13:20:52 116

原创 iOS用workspace和cocoapods管理多个项目

1. 构建一个Workspace如图选择构建一个WorkSpace,会生成.xcworkspace文件,以后就通过打开这个文件来打开WorkSpace。打开工程,会发现什么都没有,然后我们要添加各个工程(project)。我现在创建一个名为Myworkspace.xcworkspace的文件放在文件夹Workspace中。2. 创建并添加新工程方法一:双击打开Myworkspace.xcw...

2020-04-12 13:12:33 1577 1

原创 iOS 蓝牙4.0开发

1.什么是蓝牙 4.0 ?  全新的蓝牙4.0技术并不是一种技术,而是由传统蓝牙,高速蓝牙和低功耗蓝牙合而为一。并且这三种蓝牙可以组合使用,也可以单独使用。其中,低功耗蓝牙即BLE是蓝牙4.0的核心规范。仅传统蓝牙是不需要App的,比如市面上大多数蓝牙耳机,只要连上电脑或者手机,在电脑或者手机设备上播放音乐,系统底层就可以通过传统蓝牙协议,将音频数据传到蓝牙音箱上播放。换句话说,就是传统蓝牙部分...

2020-04-12 12:49:36 535

空空如也

空空如也

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

TA关注的人

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