- 博客(127)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 [iOS]GCD知识点梳理
1.6 Dispatch Group追加到Dispatch_queue中的多个处理全部结束之后想执行结束处理,对于并发队列(Concurrent Dispatch_queue)而言,需要使用Dispatch Group来实现。比如,追加3个block到Global Dispatch Queue中,这些block会全部执行完毕,就会执行Main Dispatch Queue中结束处理用的block。...
2018-05-23 22:24:15
208
原创 自定义KVO
自定义KVOKVO原理:采用isa-swizzing技术,使被观察者对象的isa指针指向它的一个子类 重写setXXX方法,给父类发送消息,传递新的属性 重写setXXX方法,给父类的观察者发消息:observeValueForKeyPath:ofObject:change:context:代码演示:1、创建NSObject的分类:因为每个对象可以使用KVO的特性#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BE
2021-03-08 23:31:48
164
原创 [Swift]简单的网络请求及数据解析(模型转换)
采用Alamofire + SwiftyJSON + HandyJSON实现一个简单的网络请求及数据解析的小demo://// ViewController.swift// SwiftGG//// Created by mac on 2020/12/19.//import UIKitimport SwiftyJSONimport HandyJSONimport Alamofireclass ViewController: UIViewController,UITableV
2021-01-04 22:40:22
879
1
原创 Swift中利用flatMap代替双层for循环
这里写自定义目录标题利用flatMap代替双层for循环代码利用flatMap代替双层for循环flatMap:平铺的意思,是高阶函数,可以对数组降维。代码func test() { let dic11 = ["name" : "lixy"] let dic12 = ["name" : "huangyanlan"]; let arr1 = [dic11,dic12] let dic21 = [
2020-12-26 16:53:19
471
原创 【iOS】Objective-C Runtime里面的一些方法
//获取类名 const char *name = class_getName([self class]); NSString *nameStr = [[NSString alloc] initWithUTF8String:name]; NSLog(@"nameStr--->%@",nameStr); //获取父类名 Class superClass = class_getSuperclass([self class]); NSStr...
2020-11-14 17:24:37
129
原创 【iOS】RunLoop学习
1、Apple的源码2、练习demo//// ViewController.m// RunloopTest//// Created by super on 2020/7/29.// Copyright © 2020 super. All rights reserved.//#import "ViewController.h"#import "MyCell.h"@interface ViewController ()<NSPortDelegate,UITableV
2020-11-07 17:39:14
109
原创 《iOS和macOS性能优化读书笔记之一》
《iOS和macOS性能优化读书笔记之一》一、CPU原理OC是一种混编语言,如果你在计算过程中采用基本的类型比如int, double等计算时间非常小,比Swift,Java采用基本数据类型计算还小。如果是采用OC的类型,比如NSNumber等,就会比较耗时。OC在快速创建对象时,比其他纯粹的面向对象的语言要慢。复杂度计算,通过indexOfObject实现的隐式二次算法的例子,如果传入参数是一个数组,使用indexOfObject方法执行检查时,执行次数为O(m),如果该成NSSet,已经摊销了
2020-05-16 16:33:43
370
原创 [iOS]RAC总结(1)
RAC总结(1)一.信号类:表示信号数据产生RACSignalRACDynamicSignal -> didSubscribe(block)RACSubject -> subscribers(数组)RCCReplaySubject ->valuesReceived(数组)二.不同信号订阅方式不同RACDynamicSignal:1.创建信号订阅者RACSubs...
2020-03-11 20:37:13
188
原创 [iOS]多参数方法调用封装
NSObject的performSelector: withObject: withObject:方法顶多支持传2个参数,局限性比较大。NSInvocation类可以用来执行多个参数的方法。具体用法,我封装了一个工具类如下:#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface NSOb...
2020-02-19 16:51:16
310
原创 [iOS]在xib中设置YYLabel自适应高度
1、直接在xib中是无法设置YYLabel的,有个方法就是:可以先自定义一个CustomLabel继承自UILabel 在拖动一个UILabel的控件到xib中,设置CustomClass为:CustomLabel 拖动这个控件,连线。 重要步骤:修改CustomLabel,父类为:YYLabel2、做完了上面步骤,进入xib,点击CustomLabel,设置它的约束。3、要想YY...
2020-02-14 14:37:02
2497
原创 【iOS】iBeacon使用
1、简介iBeacon设备是基于蓝牙进行广播的,通过发送广播信号,附近的用户当进入到设备附近的范围区域,即可通过手机与之交互。在iOS开发中,要让iBeacon设备与手机交互开发不是使用CoreBlueTooth库提供的API,而是CoreLocation库,具体来说用的类有CLLocationManager、CLBeaconRegion和CLBeacon类。2、开发要点用户权限 ...
2020-01-18 21:53:05
313
原创 2019年个人总结
0x00 前言2020年悄然而至,不管你愿不愿意,它还是到来了。不管你2019年经历过什么风雨,或收获过多少沉甸甸的果实,时光匆匆它还是流走了,这个是对所有人都是公平的。回顾2019,感受颇多。有欢笑也有泪水,有平淡也有意义。简单的文字总结,是记录也是激励,提醒自己在以后的梦想道路上继续挥洒汗水,砥砺前行!0x01 学习把学习放在第一个点来讲,主要是我一贯觉得:作...
2020-01-01 17:14:36
177
原创 [iOS]keychain基本API使用demo
//// ViewController.m// KeyChine test//// Created by mac on 2019/12/5.// Copyright © 2019 mac All rights reserved.//#import "ViewController.h"#import <Security/Security.h>static N...
2019-12-10 09:23:39
244
原创 [iOS]YYModel用法总结
笔者之前一直在用MJExtension来做网络数据模型转换,最近发现这个库在某些场景下转换会出现问题,然后就尝试了使用YYModel。YYModel很久之前就听说过,源代码写得很精妙,也有很多开发者在用。这里简单通过demo总结下它的用法。新建两个model:YYAuthor和YYBook。YYAuthor.h//// YYAuthor.h// YYModelDemo...
2019-09-17 23:04:48
1282
原创 [iOS]AFNetwroking的HTTPMethodsEncodingParametersInURI
今天在弄公司一个项目时候,发现AF默认将此参数设置成这样: // HTTP Method Definitions; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html self.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEA...
2019-08-12 15:51:01
595
原创 XMPP框架_IQ
在XMPP的《XMPP框架_协议》文章中介绍了很多XMPP的相关协议的内容,这些协议的实现都是基于IQ的。IQ(info/query)是XMPP定义的的一种用来查询,发送请求等操作的指令工具集。它为XMPP通讯提供了请求和响应机制,类似于http请求的GET/POST/PUT方法,有四种类型:get 对应http请求的GET set 对应http请求的POST result 请求...
2019-07-27 17:57:31
297
原创 [iOS]XMPP框架_协议
XMPP_Protocol查询服务器信息用户通过查询服务器信息来查看服务器对特定某些功能的支持,比如:用户需要查询是否支持在多个终端同时发送消息,点击下面的查询语句,服务器返回<feature var=’urn:xmpp:carbons:2’> 节点则表明是支持此功能的。 <iq xmlns='jabber:client' from='romeo@...
2019-07-19 23:56:53
268
原创 [iOS]录音库封装
#import <Foundation/Foundation.h>#import <AVFoundation/AVFoundation.h>#import "Constant.h"@interface STAudioManager : NSObject<AVAudioRecorderDelegate, AVAudioPlayerDelegate>...
2019-07-19 23:37:05
330
原创 [iOS]XMPP框架_组件导入
导入XMPPFramework遇到的问题:如果在pod文件里面直接这么写: pod ‘XMPPFramework’,Build工程的时候会报错:这个时候,你去修改源代码把@import KissXML改成 #import "KissXML.h"发现是件很蛋疼的事情,而且修改完后之后又报错:“Module CocoaAyncSocket not found”…。解决方法:在pod 文件里面在...
2019-04-13 08:29:38
145
原创 [iOS]static关键字的理解
抛转引入我们在创建UITableViewCell的时候,经常编写这样的代码。static NSString *ID = @"XXXcell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (!cell) { cell = [[UITableVie...
2019-03-26 23:21:59
206
原创 [iOS]UICollectionView布局使用之二-居中放大
实现卡片浏览时居中放大的效果。STFlowLayout.h#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface STFlowLayout : UICollectionViewFlowLayout@endNS_ASSUME_NONNULL_ENDSTFlowLayout.m#import "ST...
2019-02-12 22:34:56
2578
原创 [iOS]Masonry适配SafeArea
一、什么是SafeAreaSafeArea:翻译中文语义即为安全区域,大家应该都不陌生,它是在iOS11引入的一个概念,在iPhoneX 等刘海屏出来之前,开发者如果想在一个ViewController的view上面添加子控件,只需要考虑我们想要添加的子控件距离屏幕上、下的边界。也就是在iOS7当中引入的两个属性:topLayoutGuide和bottomLayoutGuide。如果ViewC...
2019-01-27 22:06:34
5176
原创 [iOS]WKWebView之MesssageHandler
一、什么是MessageHandler MessageHandler是WKWebView用来处理原生与JS交互的消息处理机制。也即是说:JS要想调用iOS原生的方法,可以采用MessageHandler。 二、怎么注入js的方法WKWebView在创建的时候有一个属性:WKWebViewConfiguration,这个configuration有个WKUserContentCo...
2019-01-21 23:33:31
467
原创 如何编写高质量的代码
写在前面2019年已经到来,这几天脑海里也在思考自己这一年的的所有经历。总的来说,2018年实在是比较难过的一年,不管是整个大的社会环境、个人的投资还是家庭琐事,都不是令人满意,甚至用很糟糕来形容也不为过。作为一个软件工程师,其他无关的事情就不写了,切回本文主题,这里只想总结一下如何编写高质量的代码。为什么要写这个主题关于软件工程质量,肯定是大家非常比较关心的话题,也是一个老生常谈的问题。...
2019-01-04 23:08:29
453
原创 [Git]常用命令
文章开始之前,贴2个学习Git的网站:Git官方 廖雪峰老师Git教程本文是对上面两个网站介绍的常用Git命令的梳理。1、查看本机Git版本$ git --version2、查看Git帮助$ git --help3、配置用户名和email$ git config --global user.name "Your name"$ git config --globa...
2018-11-10 10:07:56
162
原创 [Git] cherry-pick命令简介
在多分支开发中,可能会会出现这样的情况:分支A作为项目主干,一般项目会把它作为预发布的分支;分支B作为bugfix分支,只作为bug修复之用,一般改完bug后集中merge到分支A,有时候不想全部merge,只希望提交部分的修改,这时候就需要用到cherry-pick命令。cherry-pick的语法如下:$ git cherry-pick 6bbf6b4注:6bbf6b4是comm...
2018-11-01 22:29:05
683
原创 [iOS]UICollectionView布局使用之一-简单布局
UICollectionView组件从iOS5开始就有了,但是一般项目很少用。这里还是梳理一下它的使用方法。我们看到很多电商类APP,比如:天猫,京东,里面的商品列表,就可以用UICollectionView来实现。借用苹果的一张图了解下它的工作流程: a、首先我们从APP界面上看到的是一行行和一列列的单元格,就是类似tableview的cell.在UICollectionVi...
2018-09-25 23:10:21
1983
原创 [iOS] 组件化之一:MGJRouter的简单实用
在大型APP开发过程会用到iOS的组件化的相关技术,这里不得不提到路由控制,虽然路由并不是组件化的核心,但是它是构造大型复杂系统的基础。目前国内的蘑菇街团队提供了MGJRouter路由库,使用比较简单,其原理主要是通过注册URL来实现路由跳转。主要有两个步骤:1、注册URL生成路由表,2.openUrl实现跳转。下面是一个简单的使用demo:一、我们创建一个类RouterManag...
2018-09-14 23:45:39
3947
原创 [iOS] 生成自增整数
最近在项目开发中遇到一个开发需求,需要在APP中自动生成自增的整数(int32_t)。之前碰到的需求有关于如何生成随机数或生成UUID之类的唯一字符串,这种生成自增整数的需求比较少见,特别是在iOS开发中,百度相关的资料比较少,反而在网上有很多关于Java的算法比较多。还是感觉Java的同学比较幸运,现在网络上有很多类库,信手拈来就可以用。当然不是说OC中没有实现的方法,其实仔细一样,这个...
2018-09-07 23:30:04
830
原创 [随笔]企业数字化发展所感
一、数字化的含义数字化是指将任何连续变化的输入如图画的线条或声音信号转化为一串分离的单元,在计算机中用0和1表示。企业的数字化是指以企业运营数据为基础,运用现代计算机技术,对内协作办公,对外提供数字化服务解决方法,提高工作效率,减少企业成本,增加客户满意度。 二、企业数字化的具体应用数字化有下面的特征:1、以物联网为代表的人和物的连接; 蓝牙通讯、智能OS、GPS、传感...
2018-08-03 21:00:57
557
原创 [iOS]ProtocolBuffer简介
1、什么是ProtocolBufferProtocolBuffer是由Google开发的一种数据格式。这种格式与平台无关,可用于通讯协议,数据存储等。ProtocolBuffer跟我们常见的XML、json格式的数据比,传输更高效,并且体积更小。在RPC数据交换格式和数据存储领域,ProtocolBuffer具有先天的优势,因此得到很好的应用。具体请google官方描述:戳这里。2、在iOS项目中...
2018-06-08 22:53:38
437
原创 [iOS]Objective-C 消息转发知识点梳理
1.1 什么是Objective-C消息转发Objective-C的对象消息传递性根据接收到的消息,找到并执行对象中的方法。当对象收到与其方法集不匹配的消息时,通过消息转发机制可以使对象执行用户预先定义的处理流程。消息转发使对象能够在收到无法识别的消息时执行各种逻辑,如将消息发给能做出回应的接收器等。1.2 消息转发流程1.3 动态解析1.4 快速转发1.5 标准转发...
2018-05-29 12:38:50
308
原创 [iOS]闲谈国密算法SM2在实际项目中的应用
一、什么是国密算法SM2SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法.主要包括:数字签名算法密钥交换协议公钥加密协议这里面涉及很多数学和密码学的相关的知识,具体的算法说明和推荐曲线请到这里下载。二、如何在iOS端实现SM2算法的签名这里主要利用gmssl库来说明如何实现数字签名,这个库是OpenSSL的国密分支,由关志等几名研究人员在维护。需要稍微吐吐槽的是这个库并不好...
2018-05-12 23:03:42
8753
3
原创 [iOS] WKWebView传值
如果在项目中采用WKWebView的方法加载网页,OC向JS传值方法总结:1、OC->JS 传数组的方法:NSString *arrStr = [self.arr componentsJoinedByString:@","];NSString *js = [NSString stringWithFormat:@"text('%ld',[%@]);",index,arrStr];[self.w...
2018-04-19 16:13:53
836
原创 [iOS]支付宝授权登录采坑记
一、关于支付宝授权demo下载下来运行,报错:“缺少pid或者appID或者私钥,请检查参数设置"pid:partnerID,是合作商户号,商户给支付宝签约时由支付宝分配的,我是问后台同事要的私钥:商户生成的私钥。商户端要生成商户公钥和商户私钥,支付宝提供了生成公私钥的工具(有window和mac 两个版本)利用此工具就可生成,然后记得把公私钥传给支付宝,支付宝会生成支付宝公钥。在哪里上传?在刚才...
2018-03-01 17:59:26
3260
2
原创 [iOS] iPhone SE 上下黑边
今天是2018年春节后开工第一天,祝新老朋友开工大吉,狗年大发!刚才同事反馈,在她的iPhone SE上显示公司的APP,屏幕上下出现2条黑边,之前一直没怎么关注APP在4 inch 屏幕上的显示,今天特地看了一下,发现确实是这样。后来检查了发现APP Retina 4的启动图有问题,正确的应该是:640*1136,UI设计的时候做成了640*1138。启动图片大小如下:型号 子项 图片大小i...
2018-02-23 09:32:39
1828
原创 [iOS] Itunes Store Operation Failed
最近用Application Loader打包发布到App Store的时候,遇到这个问题:之前没有遇到过这个情况,查了一下用这个方法解决了我的问题:在Mac的命令行输入cd ~mv .itmstransporter/ .old_itmstransporter/具体查看stackOverFlow:sof上的问题回答...
2018-02-10 09:28:55
277
原创 [iOS] APP的跳转
1.APP与APP之间的跳转原理:通过设置跳转到应用B的URL Schemes(自定义的协议头),应用B将其自身“绑定”到一个自定义URL Schemes上,就可以从应用A中利用应用B的URL Schemes启动应用B了。比如:应用A跳转到应用B需要在应用B的项目中设置:a、B -> TARGETS -> Info -> URL Types -> URL Schemes,设置App-B
2018-01-29 22:59:49
324
原创 【iOS】记录一次虐心的状态栏问题
最近发现在自己开发的一款APP中,状态栏不见了,找了很久没有找到原因。下面记录一下自己的爬坑经历:1、首先我的项目中所使用的导航栏是采用自定义的方式实现,而且是黑色的,而状态栏采用的是全局控制为白色,也就是用下面的代码来处理处理的:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightCont
2018-01-11 15:20:36
916
原创 2017年个人总结
2017年过去几天了,这几天脑子里也在酝酿着对过去的一年做个个人总结,在感叹时间如白驹过隙之外,想用文字记录下自己2017的经历,收获和不足。关于家庭为什么先写家庭呢,因为2017年对于我来说家庭变化是最大的,最重要的事情是儿子出生了,想想老婆从怀孕到生下儿子,期间也经历了不少磨难,包括生孩子在医院那段时间所遭受的痛苦,有人说,女人生孩子就是去鬼门关走了一遭,确实,女人太伟
2018-01-06 21:36:35
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人