基础知识
文章平均质量分 91
Deft_MKJing宓珂璟
并非所有流浪者都迷失了自我
展开
-
Swift 5.1 温故而知新笔记系列之第四天
1.协议协议可以用来定义方法,属性,下标的声明,协议可以被枚举,结构体,类遵守。协议中定义属性时必须用var关键字实现协议时的属性权限要不小于协议中定义的属性权限协议定义get、set,用var存储属性或者get、set计算属性去实现协议定义get,用任何属性都可以实现为了保证通用,协议中必须用static定义类型方法,类型属性,类型下标(class就只能用哪于类,因此用static更通用)只有将协议的实例方法标记为mutating才允许结构体,枚举的具体实现修改自身内存,类的方法实现原创 2021-02-28 22:30:59 · 379 阅读 · 0 评论 -
Swift 5.1 温故而知新笔记系列之第三天
属性有等号=肯定是存储属性没有等号如果是get``set就是计算属性,willSet或者didSet就是存储属性,属性观察器 ,而且不能和计算属性的get,set一起出现,就矛盾了存储属性类比成成员变量存储在实例的内存中结构体、类可以定义存储属性枚举不可以定义存储属性,因为枚举的内存结构是用来存储case的关联值或者原始值的,底层看来就不能存储属性内存在创建类或者结构体实例时,必须为所有的存储属性设置一个合适的初始值延迟存储属性class Car { init() {原创 2021-02-27 22:10:54 · 324 阅读 · 0 评论 -
Swift 5.1 温故而知新笔记系列之第二天
1.结构体在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比如Bool、Int、Double、String、Array、Dictionary等都是结构体struct Point { var x: Int = 0 var y: Int = 0 var origin: Bool = false}var point = Point(x: 10, y:10, origin:false)print(MemoryLayout<Point>.size) //原创 2021-02-21 01:25:03 · 341 阅读 · 0 评论 -
Swift 5.1 温故而知新笔记系列之第一天
1.编译流程操作swiftc -dump-ast main.swift // 生成语法树swiftc -emit-sil main.swift // 生成最简洁的SIL代码swiftc -emit-ir main.swift -o main.ll // 生成LLVM IR代码swiftc -emit-assembly main.swift -o main.s // 生成汇编代码Contents/Developer/Toolchains/XcodeDefailt.xctoolchain/原创 2021-02-18 20:58:19 · 398 阅读 · 0 评论 -
iOS 轻量级包管理工具Carthage了解下
Why Carthage?我们已经熟知Cocoapods了,对于工程来说,帮我们自动创建Xcode WorkSpace和所有的依赖,对于依赖库来说,用来做本地local pod或者远程pod都非常好用,我们只要编写好对应的podspec文件,Cococapods会帮我们生成所有的依赖配置集成到项目。可以认为他是一体机,入侵性的帮我们管理好了Xcode项目文件。对于不需要手动管理的同学,这已经是一个长期好用的工具了,那为什么还要有Carthage呢?1、去中心化管理工具没有集中的podspec仓库管理过原创 2020-06-27 15:55:42 · 1121 阅读 · 0 评论 -
聊聊NSInvocation和NSMethodSignature
前言咱们这里不会通过源码介绍Runtime,已经有很多文章介绍了,而且太晦涩,读起来不舒服,也不会介绍Runtime的一些基本原理,这个作为iOS开发最熟悉了,只是通过一些我们平时用到的操作,来宏观的介绍NSInvocation和NSMethodSignature,随便聊聊,做一些简单的记录,还记得刚接触这个的时候咱们脑海里面的问号吗?什么是方法,什么是选择器,什么是方法签名,什么是IMP,什么是消息?下面简单的回顾下Selector选择器是方法的名称。你肯定对以下选择器非常熟悉:alloc,ini原创 2020-05-19 18:51:57 · 996 阅读 · 0 评论 -
重拾Objective-C中的多态分析以及重写和重载的区别
什么是多态?面向对象语言的三大特性,继承,封装和多态。其中封装和继承很容易理解,那么继承和多态就是相辅相成的两个特性。什么是多态?就是面向对象语言中同一个接口可以有不同的实现方式,OC中的多态是不同对象对同一消息的不同响应方式,子类通过重写父类的方法来改变同一方法的实现,体现多态性。另外我们知道C++中的多态主要是通过virtual关键字(虚函数、抽象类等)来实现,具体来说指的是允许父类的指针指向...原创 2018-03-06 11:08:01 · 955 阅读 · 0 评论 -
iOS开发中setObject:ForKey和setValue:ForKey的用法和区别
开发中会遇到这样的两个API,有时候后台数据为空的时候,没有做兼容,那么直接炸了,稍微留一下具体的意思1.- (void)setObject:(ObjectType)anObject forKey:(KeyType )aKey; (字典专属方法)anObject// key对应的valye 强引用对象 retaincount +1The value for aKey.原创 2016-11-08 18:49:51 · 4930 阅读 · 0 评论 -
iOS Category的正确理解
Category的作用 (1)可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(因为框架类没有源码,不能修改)。 (2)创建对私有方法的前向引用:如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告 (3)向对象添加非正式协议:创建一个NSObjec原创 2017-10-25 17:27:31 · 824 阅读 · 0 评论 -
Objective-C运行时Hook函数避免Crash以及无码埋点的思路
关键字介绍 SEL IMP Method1.SEL/// An opaque type that represents a method selector.typedef struct objc_selector *SEL;Objective-C 在编译时,会根据方法的名字生成一个用来区分这个方法的唯一的一个ID,本质上就是一个字符串。只要方法名称相同,那么它们的ID就是相同的。2.IMPtype原创 2017-10-26 11:33:02 · 2825 阅读 · 0 评论 -
iOS获取手机唯一标识符来判断不同终端登录(IDFA和UUID分析)
11.13更新广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。是iOS 6中另外一个新的方法,提供了一个方法advertisingIdentifier,通过调用该方法会返回一个NSUUID实例,最后可以获得一个UUID,由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,原创 2017-06-08 11:31:26 · 15353 阅读 · 3 评论 -
WKWebView的缓存问题以及如何正确清理缓存
NSURLCache 为您的应用的 URL 请求提供了内存中以及磁盘上的综合缓存机制。 作为基础类库 URL 加载系统 的一部分,任何通过 NSURLConnection 加载的请求都将被 NSURLCache 处理。当然系统有默认的,你也可以自己手动初始化并且给需要的大小以及存储沙盒地址,其实AFNetWorking里面就有+ (NSURLCache *)defaultURLCache {原创 2017-11-16 10:28:34 · 20527 阅读 · 0 评论 -
iOS开发一路走来看到,好奇,好玩,学习的知识点记录
见到一个好的知识点就记录下,过段时间我感觉自己会消化不良原创 2016-08-18 16:29:12 · 110362 阅读 · 0 评论 -
一文看懂@dynamic 与 @synthesize 关键词
关键词的场景,之前@dynamic只在NSManagedObject的子类中遇到过,因为NSManagedObject的子类是由CoreData直接生成的,其中对应参数(@property)的setter和getter方法也是由CoreData直接生成,并且不展现给你 getter && setter首先介绍一下什么是setter和getter方法:由名字也大致能猜出 getter方法是当你的程原创 2017-10-12 15:55:57 · 15562 阅读 · 0 评论 -
Objective-C 中 Nullability 和 Swift 中的 ? or !
Nullability Annotations 就是这两个东西_Nullable and _Nonnull1.在Swift中对于option和non-option有着很明显的区分,例如NSView!(NSView对于Swift而已也是non-option的)和NSView?,但是OC中只有一个写法就是NSView ,即可以表示option,也可以表示non-option的,那么问题来了,当OC翻译 2017-10-18 17:06:29 · 435 阅读 · 0 评论 -
iOS开发2016小知识点记录
iOS开发中遇到的小知识点汇总,小小知识,积少成多原创 2016-07-27 18:31:27 · 1799 阅读 · 0 评论 -
dequeueReusableCellWithIdentifier vs dequeueReusableCellWithIdentifier : forIndexPath
StackOverFlow链接老外的原文问题链接方法名介绍- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier; // Used by the delegate to acquire an already allocated cell, in lieu of a原创 2017-09-30 13:59:56 · 729 阅读 · 0 评论 -
iOS 图片轮播图浅析,教你用SDCycleScrollView自定义样式,附带轮播头部下拉放大效果
iOS图片轮播各种样式以及头部图片轮播的下拉放大效果原创 2016-06-13 15:06:51 · 18851 阅读 · 2 评论 -
iOS版本兼容以及部分iOS 11适配
Tips Xcode 配置理解1.Base SDK 指的是当前编译用的SDK版本。简单来说就是表示当前使用的Xcode所支持的最高的SDK的版本,比如现在是用iOS 11来编译程序,那么最高的SDK也就是11 2.Deployment Target 指的是编译出的程序将在哪个系统版本上运行,它控制着运行应用需要的最低操作系统版本。简单来说是当前的设置的Target所支持的最原创 2017-09-27 16:23:40 · 4791 阅读 · 0 评论 -
iOS 对象内存结构本质
iOS对象内存本质,Block原理,Category原理,Runtime,Runloop原创 2017-07-21 10:58:03 · 2047 阅读 · 1 评论 -
AutoLayout和Masonry两种方式实现自动布局的内容包裹和视图均分
前言这两种方式分别代表了两种人,一种快速布局,直观,但是很多人认为很难维护,后者纯代码布局,老一派的人用起来都说好,反正一说起来就打起来了,一个虽然快,但是难以维护啊,一个虽然写起来很多,但是维护起来简单啊,巴拉巴拉的,我个人觉得,适配的话最好能深刻理解AutoLayout,Apple特有的东西,理解下也好,有了直观的理解之后,你再用Masonry就非常的简单了,个人观点而已,不喜勿喷,主要之前参与原创 2017-05-10 15:43:26 · 1050 阅读 · 0 评论 -
iOS遇到的开发框架和优质博客,不断更新中
少年,既然你打开了,你往下翻,中间优质博客你看了肯定会收藏的,历年来收藏的点点滴滴 非常牛B的iOS实现源码点击打开链接1.iRate 评分的弹窗 https://github.com/nicklockwood/iRate2.MLTransition.h (还有个JZNavigationExtension)解决直接屏幕中间手势滑动的界面切换 https://git...原创 2016-05-27 17:53:06 · 7426 阅读 · 2 评论 -
iOS基础面试知识点总结
基础面试知识1.对属性修饰符的理解MRC下 - assign 主要用于代表简单数据类型,setter方法也只是简单的赋值,例如int float 如果用来修饰对象,并不持有对象,那么对象的引用计数不变,如果这个时候对象被释放了,他就可能成为悬垂指针,不手动置为nil,很容易崩溃 - retain 修饰对象,不能修饰基本数据类型 ,引用计数+1,适用于NSObject及子类A...原创 2017-02-28 19:13:59 · 2121 阅读 · 3 评论 -
iOS Block深层次总结和一些经典的面试题
2分钟明白Block究竟是什么?局部变量的截获以及__block的作用和理解隐藏的三种Block本体以及为什么要使用copy修饰符__block和Block的循环引用上面几个是之前看书记录的知识点,可以回顾下,下面用人话概括下自己的理解,方便以后参考,先记住一个概念,Block就是一个对象OC Block—&gt; C++转换1.最普通的转换int a = 10...原创 2017-11-20 15:46:54 · 7010 阅读 · 0 评论 -
iOS App签名原理和HTTPS证书原理
前言先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三方软件难以控制,盗版流行。苹果希望解决这样的问题,在 iOS 平台对第三方 APP 有绝对的控制权,一定要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢?就是通过签名机制。非对称加...原创 2019-07-11 15:38:11 · 1393 阅读 · 0 评论 -
CSS中position属性(relative,absolute,fixed)和display中的inline-block
前言平时很少写CSS,用的多也就是Bootstrap来堆样式,写起来快一点,但是有时候需要自己写,很久没写容易忘记,这里记录下这两个常用属性position和display这里贴一条CSDN设置图片宽度的方式,太坑了,先拖出来拿到src,然后如下<img src="https://img-blog.csdn.net/20170120190855355?watermark/2/text/...原创 2019-06-26 16:05:57 · 3335 阅读 · 0 评论 -
Mac移动硬盘不正确断开连接导致无法读取加载的解决方法
问题首先Mac上的移动硬盘,如果不正常推出,比如是没电了自动关机,或者没有正常推出,直接拔出来了,这个时候再次链接就会遇到无法装载的问题,但是可以通过命令行查看到。解决1.查看所有硬盘信息diskutil list>>> 输出如下/dev/disk0 (internal, physical): #: TYPE NAM...原创 2019-06-16 15:52:52 · 17174 阅读 · 4 评论 -
iOS组件化开篇(Cocoapods远程库和本地私有库制作)
目录Git基本操作Cocoapods发布自己的框架1.安装cocoapods2.使用cocoapods3.cocoapods发布自己的框架Cocoapods本地私有库前言自己的工具库和框架以前都是直接在模块里面操作的,没有做成私有化或者cocoapods管理,有必要操作一番,就有了以下的笔记1.git基本使用2.cocoapods发布自己的库给银河系的大佬d...原创 2018-12-24 12:30:03 · 1351 阅读 · 0 评论 -
Objective-C之Autorelease Pool底层实现原理记录(双向链表)以及在Runloop中是如何参与进去的
最近需要重新整理知识点备用,把一些重要的原理都搞了一遍NSDictionary和NSArray底层原理HTTPS层引出OSI全部模型数据协议流转全过程Xcode Command + R全过程以及启动优化前言int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicatio...原创 2018-10-06 00:16:00 · 2333 阅读 · 0 评论 -
iOS Command + R 编译全过程详解
目录编译器介绍Clang+LLVM编译过程记录Xcode编译一次全过程iOS客户端启动优化分析总结项目Build到加载应用到手机展示出首页的大概过程如下前言这几天看了下编译过程,就想到了头条的技术博客写了启动时间优化,把几个博客的知识点整理验证了下。国庆期间,晚上有空把知识点重新梳理下,方便以后查阅,毕竟看懂了不是真的懂,可能睡了一觉就乱了思路,很有必要把思路整理写出来...原创 2018-10-02 23:27:53 · 4995 阅读 · 1 评论 -
NSDictionary和NSMutableArray底层原理(哈希表和环形缓冲区)
前言1.NSDictionary底层是哈希表,下面会介绍具体是用拉链法还是开放定址法线性探测来解决冲突?由于Apple给的查询复杂度可以快至O(1),那么为什么是O(1),底层是如何通过空间换取时间的?2.NSArray是线性连续内存,这个很好理解。但是NSMutableArray是可以插入和删除的,那么如何做到高效?就比如插入,如何做到尽可能少的移动或者不移动插入元素后其他元素的内存?实...原创 2018-09-17 12:43:42 · 8839 阅读 · 0 评论 -
YYWebImage流程源码分析(YYCache和YYImage设计思路)附带所有YYKit组件源码分析
以下所有的介绍不想看源码,可以直接看文字介绍,一样的逻辑,不妨碍阅读前言首先,所有的源码和作者提供的基本资料在这里都能找到点击打开链接YYWebImage是网络图片下载的Category,其中YYImage是编码解码的基石,YYImage已经单独拉出一篇分析过了YYImage分析,非常重要的编码解码思路,可以看看,还有一个就是YYCache,这里就和YYWebImage一起分析了。大家熟知的就是S...原创 2018-04-11 17:16:56 · 3311 阅读 · 0 评论 -
iOS高性能Model转换框架----YYModel学习
YYWebImage源码分析YYImage源码YYText源码分析框架简介YYClassIvarInfo此类就是objc_ivar的封装/** Instance variable information. struct objc_ivar { char * _Nullable ivar_name OBJC2_UNAVAILABL...原创 2018-04-03 17:02:09 · 3982 阅读 · 0 评论 -
ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了
前言NSDictionary和NSMutableArray底层原理(哈希表和环形缓冲区)Django中CSRF防御全过程解析以及中间件作用机制平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念。点击打开链接1.ASCII我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位...原创 2018-03-06 17:29:34 · 111489 阅读 · 49 评论 -
iOS网络层数据安全处理之AES基本介绍
相关文献高级加密模式之AES工作原理iOS AES/CBC/PKCS7Padding加密、解密问题加密解密工具iOS Int类型转换成NSDataAES补位填充模式数据加解之AES篇前言(摘录自上面文章) 最近在重构之前写的HTTP代理,这个代理是由代理客户端和代理服务端组成的,二者之前使用SSL保证通信内容不会受到中间人(MITM)攻击。而新的实现打算移除SSL,因为SSL握手的开...原创 2018-03-05 17:02:17 · 845 阅读 · 0 评论 -
iOS开发中自旋和互斥锁的理解以及所有锁的性能比较
补充:可以看到除了 OSSpinLock 外,dispatch_semaphore 和 pthread_mutex 性能是最高的。苹果在新系统中已经优化了 pthread_mutex 的性能,所以它看上去和 OSSpinLock 差距并没有那么大了。可以看到YYKit组件中YYCache 和 YYImageCoder大量使用 dispatch_semaphore pthread_mute...原创 2018-03-11 10:17:08 · 7417 阅读 · 1 评论 -
iOS倒计时设计思路和一个系统时间的坑
个人知识点记录,仅供参考1.用GCD定时器更准确 2.当前时间要用服务器时间 3.如何考虑手机锁屏线程休眠 4.如何做到tableViewCell里面放倒计时 5.到期时间不变,当前时间在变,主要操作的是这个差值 Demo分析1.创建GCD定时器 Demo用NSDate来模拟服务器当前时间@property (nonatomic,strong) dispatc...原创 2017-05-08 18:32:29 · 3599 阅读 · 4 评论 -
关于NSDate,NSDateFormatter,NSTimeZone的一些通俗理解
基础概念 1.GMT 0:00 格林威治标准时间; UTC +00:00 校准的全球时间; CCD +08:00 中国标准时间 2.iOS中的时间类NSDate中存储的时间,都是相对于GMT的,我们使用NSDate时(NSDate必须是0时区的,UTC格式的),会根据App设置的当前时区设置返回与时区对应的数据。3.iOS中的时区表示方法:GMT+0800 GMT-0800。(+:东区 -:西区 0原创 2017-05-05 16:34:43 · 1424 阅读 · 0 评论 -
UIButton实现上图下字,左图右字等组合形式以及sizeToFit的简单理解
UI需求中很会遇到很多文字和图片混排的效果,暴力做法就是图片用Image,文字用Label分开来实现,然后组合,但是我们有UIButton,可以根据他的imageEdgeInsets和titleEdgeInsets来实现需要的效果我们默认情况下给UIButton设置image和titile之后是这样的左边图片和右边文字,默认居中,而且紧靠着那原创 2016-11-04 18:11:24 · 6638 阅读 · 0 评论 -
AFNetWorking 请求头的配置用来完成HTTP Basic Auth的鉴权
AFNetWorking的请求头设置原创 2016-07-13 19:30:30 · 13384 阅读 · 3 评论