OC
文章平均质量分 66
玉树临风你卓哥
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
iOS - GCD死锁
普通死锁队列 串行队列调度方法 同步调用(dispatch_sync)同一个Q 当前所分发到的Q 和 “外部Q” 是否是同一个Q{ NSLog(@"不死1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"死锁"); });} 高级死锁调度方法 同步阻塞调用(dispatch_barrier_sync)同一个Q 当前所分发到的Q 和 “外部Q” 是否是同一个Q{ //并行队原创 2022-05-31 14:47:30 · 383 阅读 · 0 评论 -
iOS | 响应链及手势识别
在上一篇「事件传递及响应链」中介绍了当屏幕上发生一次触摸之后,系统会如何寻找「第一响应者」,在寻找到「第一响应者」之后,如何确定「响应链」以及如何沿「响应链」传递事件。在上一篇文章的环境中,是不使用UIGestureRecognizer的。但是在我们平时的开发中想要给一个UIView加上处理事件的能力的话,使用UIGestureRecognizer及其子类比继承一个UIView的类、重写 touches 方法要方便的很多。这两种方法对事件的处理机制相互影响又有所不同。这也是本文的讨论内容...转载 2022-01-24 15:14:04 · 687 阅读 · 0 评论 -
iOS | 事件传递及响应链
转载 2022-01-24 15:13:06 · 2075 阅读 · 0 评论 -
iOS - hitTest方法&pointInside方法
hitTest方法当事件传递给控件的时候,就会调用控件的这个方法,去寻找最合适的viewpoint:当前的触摸点,point这个点的坐标系就是方法调用者- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;pointInside方法作用:判断当前这个点在不在方法调用者(控件)上- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;hitTest原创 2021-05-21 15:22:33 · 717 阅读 · 0 评论 -
iOS - UIStackView 布局 详解
UIStackView是iOS9之后推出的,我也是第一次接触,在学习的过程中对于其中的相关属性,尤其是对其中的distribution几个属性值,一知半解的,所以特写此文通过代码实例理解它们每个属性的区别。UIStackView主要包括了四大属性:axis、alignment、distribution、spacing。一、axis主要设置UIStackView布局的方向:水平方向或垂直方向。typedefNS_ENUM(NSInteger,UILayoutConstraintAxis) {UILay原创 2021-04-12 16:12:13 · 6627 阅读 · 1 评论 -
常用MIME Type 配置
Video TypeExtensionMIME TypeMPEG-4.mp4video/mp4Ogg Video.ogvvideo/oggFlash Video.flvvideo/x-flvA/V Interleave.avivideo/x-msvideoMicrosoft Windows Media.wmvvideo/x-ms-wmvRealMedia Variable Bitrate.rmvbapplication/vnd.rn...原创 2020-12-24 09:59:09 · 534 阅读 · 0 评论 -
iOS - PHImageManager、PHCachingImageManager
PHImageManager根据PHAsset获取资源图片API- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset - targetSize:(CGSize)targetSize - contentMode:(PHImageContentMode)contentMode - options:(nullable PHImageRequestOptions *)options - resultHandler:(void (^)(UI原创 2020-11-22 20:45:43 · 2135 阅读 · 0 评论 -
iOS - dispatch_after 取消操作
// dispatch_after取消操作typedef void(^DelayedBlockHandle)(BOOL cancel);DelayedBlockHandle perform_block_after_delay(CGFloat seconds, dispatch_block_t block);void cancel_delayed_block(DelayedBlockHandle delayedHandle);DelayedBlockHandle perform_block_afte原创 2020-10-21 13:40:04 · 1926 阅读 · 0 评论 -
iOS - App Clip「苹果小程序」
App Clips是什么?官方对其的定义是——App clips are a great way for users to quickly access and experiencewhat your app has to offer. An app clip is a small part of your appthat’s discoverable at the moment it’s needed. App clips are fast andlightweight so a user原创 2020-09-23 13:41:13 · 4774 阅读 · 1 评论 -
iOS - 系统字体样式
NSString *sampStr = @"bytedance开发者012345";NSMutableAttributedString *fontStr = [NSMutableAttributedString new];for(NSString * familyName in [UIFont familyNames]){// NSLog(@"字体族科名 = %@",familyName); // 输出字体族科名字 NSAttributedString *aAttrStr =原创 2020-06-10 12:33:59 · 547 阅读 · 0 评论 -
iOS - 关键字 - 泛型ObjectType 协变__covariant 逆变__contravariant
一.泛型作用泛型:限制类型 为什么要推出泛型?迎合swift泛型作用:1.限制类型 2.提高代码规划,减少沟通成本,一看就知道集合中是什么东西二.泛型用法:__covariant:协变, 子类转父类__contravariant:逆变 父类转子类1.泛型声明:在声明类的时候,在类的后面<泛型名称>//第一步 声明泛型@interface Person<__covariant ObjectType> : NSObject// 语言@property原创 2020-05-20 19:29:10 · 1253 阅读 · 0 评论 -
iOS - ScrollView滚动详解
有两种滚动ScrollView的方法:1.用户手动滚动,即用户手势识别——主要识别两种手势:drag(拖拽)手势和flick(轻弹)手势区别:flick(轻弹)手势是drag(拖拽)手势的一个变种。flick(轻弹)手势在用户手指离开屏幕后有一个惯力,该惯力在手势结束后使scrollView继续减速滑动。在scrollView减速滑动期间,用户触摸屏幕会停止scrollView的减速滑动。问题:flick(轻弹)手势会产生一个惯力,该惯力由拖动的速度决定,该速度可以由- (void)scrollVi原创 2020-05-18 10:56:15 · 3463 阅读 · 0 评论 -
iOS - dispatch_time_t
dispatch_time_t 类型,它的创建有两个函数1. dispatch_time(<#dispatch_time_t when#>, <#int64_t delta#>)第一个参数是从什么时间开始,一般直接传DISPATCH_TIME_NOW 表示从现在开始第二个参数表示具体的时间长度(不能直接传 int 或 float), 可以写成这种形式 (int64...原创 2020-04-24 11:45:30 · 845 阅读 · 0 评论 -
iOS - 增加按钮点击范围
#import <UIKit/UIKit.h>#import <objc/runtime.h> @interface UIButton (EnlargeEdge) /** 设置可点击范围到按钮边缘的距离 */- (void)setEnlargeEdge:(CGFloat)size; /** 设置可点击范围到按钮上、右、下、左的距离 */- (void)se...原创 2020-04-09 09:34:23 · 779 阅读 · 0 评论 -
iOS - -void、void * 、id、NSObject 和 nil、Nil、NSNull、NULL
1. void、void * 、id1.1 void 和 void *1.1.1 void关键字表示“空类型”的抽象概念但这里的“空类型”不表示“任意类型”,实际上它也不是一种类型,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西作用:1、对函数返回值进行限定- (void)viewDidLoad { }2、对函数传入参数进行限定...原创 2020-04-08 13:28:47 · 1186 阅读 · 0 评论 -
iOS - http & https & 网络请求过程
给大家总结网络请求过程:三次握手图集:看了此图, 于是乎,问题来了, 不是TCP链接的时候需要三次握手么( http://blog.csdn.net/whuslei/article/details/6667471 ),问题确实来了, 三次握手每次都需要应用层的数据报文么, 于是乎搜得答案具体链接:http://blog.csdn.net/luozenghui...转载 2020-02-16 21:53:23 · 1257 阅读 · 0 评论 -
iOS - KVC和KVO详解
KVCKVC定义KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于KVC实现的。在实现了访问器方法的类中,使用点语法和KVC访问...转载 2020-02-16 18:52:58 · 431 阅读 · 0 评论 -
iOS - 自动释放池(Autorelease Pool)和RunLoop
自动释放池(Autorelease Pool)先看一个例子:#import "SecViewController.h"__weak NSString *stringA = nil;__weak NSString *stringB = nil;__weak NSString *stringC = nil;@implementation SecViewController...转载 2020-02-16 18:16:00 · 1654 阅读 · 0 评论 -
iOS - 如何判断一个点是不是在方框(CGRect)、圆(Circle)、三角形(Triangle)内呢?
如何判断一个点是不是在方框(CGRect)、圆(Circle)、三角形(Triangle)内呢?1. 方框//苹果官方方法可以判断+ (BOOL)point:(CGPoint)point inSquareArea:(CGRect)rect { return CGRectContainsPoint(rect, point);}2. 圆//圆心到点的距离>?半径+ (BO...原创 2020-02-13 19:35:37 · 2063 阅读 · 0 评论 -
与、或、异或运算,以及常用运算(二进制赋值、取值、左移、右移、求余数、向上取整、向下取整)
与、或、异或运算1.与运算(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即 0000 0011 & 0000 0101 = 0000 0001因此,3&a...原创 2018-01-31 10:12:06 · 14269 阅读 · 2 评论 -
iOS - CPU架构
之所以提到CPU架构的问题,其实是iOS开发使用的静态库与动态库与之紧密相连。在运行项目的时候,Xcode需要分析当前运行平台的CPU架构,然后确定所使用的静态库是否支持这个CPU架构。如果不支持就会报错。什么是CPU架构?CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。目前市面上的CPU分类主要分有两大阵营,一个是intel...原创 2020-01-22 12:34:33 · 1905 阅读 · 0 评论 -
iOS - 常用基本类型,不同架构下,对应的字节数。
32位机器(字节) 64位机器(字节) char 1 1 char *(指针类型) 4 8 BOOL 1 1 short 2 2 int 4 4 unsigned int 4 4 NSInteger 4 8 long 4 8 long long ...原创 2020-01-22 12:30:37 · 732 阅读 · 0 评论 -
数据存储 - FMDB源码分析(FMResultSet)
FMDB是IOS平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言的API。FMDB使用起来更加的面向对象,省去了很多麻烦、冗余的C语言代码具体对比详见我的简书iOS开发数据存储篇—libsqlite3和FMDB的基本使用和区别,对比苹果自带的Core Data框架,更加的轻量级和灵活。提供了多线程安全的数据库操作的方法,有效的防止数据混乱。开源地址。源码分析FMDB源...原创 2019-12-06 12:02:18 · 517 阅读 · 0 评论 -
数据存储 - iOS中的几种数据存储方式
常见的储存方式文件读写存储(plist,NSUserDefaults)解归档存储(NSKeyedArchiver)数据库存储(SQLite、FMDB、CoreData、Keychain)了解缓存,先要了解iOS中沙盒机制这个概念沙盒其实质就是在iOS系统下,每个应用在内存中对应的存储空间。每个iOS应用都有自己的应用沙盒(文件系统目录),与其他文件系统隔离,各个沙盒之间相互独立,...原创 2019-12-06 15:34:41 · 454 阅读 · 0 评论 -
数据存储 - libsqlite3和FMDB的基本使用和区别
一、简要介绍libsqlite3是IOS中纯C语言操作Sqlite数据库的一个库文件。使用起来和OC面向对象的方式有点别扭,不是特别的方便。FMDB是IOS平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言的API。FMDB使用起来更加的面向对象,省去了很多麻烦、冗余的C语言代码,对比苹果自带的Core Data框架,更加的轻量级和灵活。提供了多线程安全的数据库操作的方法,有...原创 2019-12-06 12:39:44 · 286 阅读 · 1 评论 -
数据存储 - iOS中的几种数据存储方式
在项目开发当中,我们经常会对一些数据进行本地缓存处理。离线缓存的数据一般都保存在APP所在的沙盒之中。一般有以下几种:PList(XML属性列表)在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦//写入文件NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentD...原创 2019-12-06 11:50:03 · 161 阅读 · 0 评论 -
iOS 富文本所有的NSAttributedStringKey
1 NSFontAttributeName; //字体,value是UIFont对象 2 NSParagraphStyleAttributeName;//绘图的风格(居中,换行模式,间距等诸多风格),value是NSParagraphStyle对象 3 NSForegroundColorAttributeName;// 文字颜色,value是UIFont对象 4 NSBackgroundC...原创 2019-10-29 19:19:44 · 2631 阅读 · 0 评论 -
UIKit --- NSLayoutConstraint
setContentHuggingPriority为 “抗拉伸”;setContentCompressionResistancePriority 为“抗压缩”;使用前:AutoLayout关于更新的几个方法的区别setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。layoutIfNeeded:告知页面布局立刻更新...原创 2019-10-18 16:10:37 · 314 阅读 · 0 评论 -
[iOS]关于状态栏(UIStatusBar)的若干问题
版本:OS X 10.10.5Xcode 6.4(6E35b)iOS >= 7一、概述状态栏(UIStatusBar)指iPhone/iPad/iPod屏幕顶部用于显示网络、时间和电量等的、高度为20点的控件。状态栏的windowLevel为UIWindowLevelStatusBar,而window的windowLevel为UIWindowLevelNormal。所以一...原创 2016-01-18 15:31:32 · 827 阅读 · 0 评论 -
UIImageView裁剪成圆形的方法
我知道的实现方法有三种。1、通过image mask来操作,需要添加mask目标图片。2、通过imageview的layer来操作如下代码 1 2 3 4 5 6 7 8 9 10 UIImageView *imageView= (UIImageView*)[statusView v...原创 2016-01-04 09:24:51 · 2076 阅读 · 0 评论 -
UIGraphicsBeginImageContext和UIGraphicsBeginImageContextWithOptions实现iOS中的截图功能
UIGraphicsBeginImageContext创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。方法声明如下:void UIGraphicsBeginImageContext(CGSize size);参数size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的...原创 2016-01-18 10:37:40 · 551 阅读 · 0 评论 -
UINavigationController和UINavigationControllerDelegate
1. UINavigationControllerDelegate协议a. 设置代理类 nav.delegate = self;b. 实现协议[cpp]view plaincopy@protocolUINavigationControllerDelegate<NSObject> @optional //Cal...原创 2016-01-22 10:34:00 · 561 阅读 · 0 评论 -
浅谈-TextField
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect;原创 2016-01-04 09:08:21 · 198 阅读 · 0 评论 -
ios 7 statusbar 状态栏 跟随navigationbar的颜色而改变
ios7以下的版本设置导航栏背景颜色可以使用[[UINavigationBar appearance] setTintColor:[UIColor orangeColor]];ios7以后:[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];默认带有一定透明效果,可以使用以下方法去除系统效果...原创 2015-12-30 14:12:09 · 1155 阅读 · 0 评论 -
文件操作(NSFileManager)
iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Library包含Caches、Preferences目录。 上面的完整...原创 2016-03-18 10:43:50 · 306 阅读 · 0 评论 -
IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作 作者:totogo2010 ,发布于2012-9-21,来源:CSDN 目录: IOS学习之IOS沙盒(sandbox)机制和文件操作(一) IOS学习之IOS沙盒(sandbox)机制和文件操作(二) IOS学习之IOS沙...转载 2015-12-24 16:02:48 · 455 阅读 · 0 评论 -
NSProcessInfo类方法
+(NSProcessInfo*)processInfo //返回当前进程的信息-(NSArray*)arguments //以NSString对象数组的形式返回当前进程的参数-(NSDictionary *)environment //返回变量/值对词典,以描述当前的环境变量(比如PATH和HOME)及其值-(int)processIdentifier //返回进程标识符,...原创 2016-01-13 09:36:13 · 874 阅读 · 0 评论 -
iOS中block的详解weakSelf、strongSelf
1我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:那么请问:什么时候在 block 里面用 self,不需要使用 weak self?答案当 block 本身不被 self 持有,而被别的对象持有,同时不产生循环引用的时候,就不需要使用 weak self 了。最常见的代码就是 UIView 的...原创 2019-09-17 17:59:31 · 351 阅读 · 0 评论 -
iOS_设置 UIButton 点击时间间隔,防止连续重复点击
//按钮第二次点击事件触发的等待时间#define Button_Seconds_Time(_seconds_) \static BOOL shouldPrevent; \if (shouldPrevent) return; \shouldPrevent = YES; \dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((...原创 2019-09-18 17:04:30 · 1169 阅读 · 1 评论 -
编程范式 --- 函数式编程(Funtional Programming,简称FP)
函数式编程(Funtional Programming,简称FP)是一种编程范式,也就是如何编写程序的方法论主要思想:把计算过程尽量分解成一系列可复用函数的调用主要特征:函数是“第一等公民”:函数与其他数据类型一样的地位,可以赋值给其他变量,也可以作为函数参数、函数返回值函数式编程最早出现在LISP语言,绝大大部分的代码编程语言也对函数式编程做了不同程度的支持,比如:Haskel...原创 2019-09-23 15:25:54 · 2153 阅读 · 1 评论