自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 swift错误记录

感觉swift能搜到的没有OC的多,所以好多出了错误的我都好半天解决不了,在这里记录一下[xxx inputViewSet]: unrecognized selector sent to instance 0x7fe46600da00’var window = (UIApplication.shared.windows.last!) as UIWindowwindow.rootViewController = interfaceViewwindow.makeKeyAndVisible()我这样

2022-04-18 23:14:32 2492

原创 调试学习笔记

巨有用系列:找button的事件:找到button的target:po [btn allTargets]找action:真的能找到方法名po [btn actionsForTarget:(id)0x166af1f0 forControlEvent:0]

2021-09-01 15:18:24 272

原创 .debug.xcconfig文件无法打开

解决方案的搬运工系列:遇到一个问题,四百多个.debug.xcconfig文件都报错,然后大半天啥也没干就搞这个了,一直没搜到有用的解决方案,直到看到这个:Xcode,Pods ProjectName.debug.xcconfig无法打开文件。错误的目录想上去给作者磕两个响头????...

2021-08-26 10:44:05 958

原创 二叉树遍历python版

文章目录层序遍历前序和中序遍历的非递归后序遍历的非递归我自己写在这里了 可以在这里测试层序遍历def levelSearch(self, root): #二叉树的层序遍历 res = [root] temp = [root] newTemp = [] while len(temp) > 0: for node in temp: if node.left:

2021-08-11 10:03:08 135

原创 swift——枚举

文章目录参考文章:一、功能1.1 语法示例参考文章:Swift枚举的全用法swift中的枚举,相较于OC,功能更加强大,允许出现更多的值类型,可以封装方法,遵守协议,实现拓展,使用范型一、功能1.1 语法示例enum Movement { case letf case right case top case bottom}1.2 值类型不同于OC的枚举只能为int型,swift允许的值类型有:● 整型(Integer)● 浮点数(Float Po

2021-06-22 14:40:51 512 1

原创 OC对象的本质

文章目录❗️参考文章奇怪的知识id类型的作用:OC语言特性动态特性smallTalk式的消息传递机制面向对象特性类与对象对象的生成对象的使用对象的销毁内存分配内存分配原则:lldb打印❗️objc_class_old.mm应该是不用了/***********************************************************************objc-class-old.mSupport for old-ABI classes, methods, and c

2021-05-14 19:59:45 259

原创 单例模式

参考文章iOS 单例模式文章目录参考文章什么是单例模式使用场景特殊性static关键字dispatch_once()懒汉和饿汉懒汉式:饿汉式什么是单例模式单例模式是比较常见的一种设计模式,目的是保证一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存。使用场景什么是静态变量:从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时又力求不破坏类的封装性;既要求此成员隐藏在类的内部,又要求对外不可见的时候,就可以使用static。计算机中的打印机也

2020-11-28 23:14:50 122

原创 ScrollView上按钮的点击和滑动

一般只能点击,滑动按钮是不能滑动scroollView的scrollView上的按钮点击问题UIScrollView的方法默认返回YES(触摸应在内容视图上取消) - (BOOL)touchesShouldCancelInContentView:(UIView *)view { [super touchesShouldCancelInContentView:view]; return YES; }​修改为对象是button时不取消- (BOOL)t

2020-11-28 23:09:05 498

原创 sideTables

主要参考文章iOS管理对象内存的数据结构以及操作算法–SideTables、RefcountMap、weak_table_t-一文章目录主要参考文章一览图使用背景sideTablessideTables概念什么是Hash表为什么分为多个sideTablesideTables到sideTablesideTable参数一:自旋锁参数二:RefcountMap refcntssideTable到RefcountMapRefcountMap:四个部分(一层结构)参数三:weak_table_t weak_tab

2020-11-21 21:03:14 271

原创 weak的创建与释放

文章目录weak的创建1.2. 源码解析——initWeak源码2.1 initWeak中的storeWeak函数2.1.1 storeWeak中的weak_register_no_lock方法添加弱引用2.1.1.1: weak_register_no_lock中的weak_entry_for_referent取元素2.1.1.2:weak_register_no_lock中的append_referrer添加元素1.2.2:storeWeak中的weak_unregister_no_lock移除引用w

2020-11-16 20:26:11 584

原创 NSString类型变量用strong修饰有什么不一样

探究的问题如题文章涉及到NSString的三种创建方式成员变量和属性写在前面test = str2以此为例,文中出现的赋值对象指str2, 被赋值对象指test。strong和copy的区别区别在与strong属性关键字实现原理是赋值的对象的引用计数加一_test = str2;如果_test是strong修饰,那么这句实现的就是str2指向的对象的引用计数加一。而如果是copyself.test2 = str2;这句话就等价于_test2 = [str2 copy];

2020-11-11 19:55:12 1329 1

原创 retainCount存放位置 & weak置nil

文章目录tipsTaggedPointertaggedPointer的使用场景&tag所占位数1. 首先taggedPointer的数据地址2. 一些别的临界值测试——taggedPointer的存储形式适用情况tips非taggedPointer的对象才有isa,也就是非taggedPointer的对象才会现在isa中存放retainCount。isa中存放retainConut,存放在uintptr_t extra_rc,uintptr_t:一个能够存储指针的无符号int。这通常意味着它

2020-11-02 19:37:00 341

原创 autoreleasePool与Runloop

https://www.jianshu.com/p/0e8af0a0b4ce一:autorelease对象的释放时机@autoreleasepool即自动释放池,在自动释放池中声明的对象如果调用了autorelase方法,那么当@autoreleasepool代码块执行完之后,在块中调用过autorelease方法的对象都会自动调用一次release方法。转换为C++代码int main(int argc, const char * argv[]) { /* @autoreleasepoo

2020-11-01 19:50:47 508

原创 KVO&KVC

参考文章iOS 了解isa-swizzling (类指针交换)iOS开发之——KVO为系统的KVO功能添加Block(闭包)特性文章目录参考文章TIPS什么是KVOKVO的使用添加观察者:回调监听兼容的调用方式删除指定key路径的监听器KVO 实现原理:KVO实现——isa-swizzling(类指针交换).class 和 object_getClass 的区分动态创建一个类的完整步骤KVO的实现大概流程实现通知具体依赖的两个方法由实现原理实现手动调用KVO第一步:关闭自动通知1. automat

2020-10-27 22:08:54 440

原创 iOS框架

参考文章iOS的主要框架介绍文章目录参考文章什么是框架常用框架之Foundation——为所有的应用程序提供基本系统服务常用框架之UIKit——提供创建基于触摸用户界面的类一些其他重要框架Core Data框架——管着你应用程序数据模型Core Graphics框架——帮助你创建图形Core Animation——允许你创建高级的动画和虚拟效果OpenGL ES 框架——提供2D和3D绘图工具一些别的框架什么是框架iOS提供了很多你可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中

2020-10-27 15:52:14 388 3

原创 成员变量&属性&关联对象

参考文章OC-成员变量和属性写在前面成员变量&属性&关联对象是OC语言中大多数变量的来源(不知道有没有别的)。OC语言是一门动态语言,动态的体现方式就是加入了面向对象特性和smallTalk式的消息传递机制,而它的实现方式就是一个用C和编译语言写的一个runtime库。由于OC是一门动态语言,所以有一部分东西是在运行时动态的添加进去,比如分类,就是动态的被添加,所以本来不可以添加属性的分类,可以在运行时添加关联方式。文章目录参考文章写在前面成员变量(Ivar)属性

2020-10-19 20:29:08 450

原创 block的使用场景之数据请求

参考文章文章目录参考文章数据请求时的数据回调背景block传值数据请求时的数据回调背景我们习惯把数据请求部分分离,使viewController没那么冗杂,下图中的[调用方法请求数据部分]就写在viewController里,而[数据请求部分]写在分开的文件里,我们起名为manger(就是一个普通的继承与NSObject的类,主要也是为了分离数据请求部分)。数据请求dataTask会开启一个新线程异步执行数据请求任务,所以数据请求要得到的数据在用时需要格外谨慎,因为可能异步的数据请求任务还没有执行

2020-10-15 21:02:49 164

原创 iOS 多继承四种实现方式

参考博客协议和 NSProxy 实现多继承文章目录参考博客1. 组合方式实现2. 通过协议实现3. 通过分类和三次拯救中的第二次拯救4. 协议和NSProxy实现NSProxy:多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。Objective-C实现多继承主要可以通过协议、分类、消息转发来实现。我们来总结一下其使用以及优缺点。1. 组合方式实现person类继承与singer和dancer类,则可以让person继承与singer,然后实例化一个d

2020-10-09 16:14:10 1254

原创 响应者链

参考文章iOS开发 - 事件传递响应链iOS以实例讲解响应者链文章目录参考文章什么是响应者链响应者UIResponder用户点击的回调方法方法调用时机:响应事件什么是响应者链当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图。在我们点击屏幕的时候,iphone OS获取到了用户进行了“单击”这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应。这一寻找的过程,被称作事件的响应链。

2020-09-24 19:14:49 305

原创 NSOperation、NSOperationQueue

参考文章iOS 多线程:『NSOperation、NSOperationQueue』详尽总结文章目录参考文章1. NSOperation、NSOperationQueue 简介2. NSOperation、NSOperationQueue 操作和操作队列操作(Operation):操作队列(Operation Queues):3. NSOperation、NSOperationQueue 使用步骤4. NSOperation 和 NSOperationQueue 基本使用4.1 创建操作4.1.1 使用

2020-08-22 01:25:12 151

原创 GCD

参考文章《iOS高级编程》中的多线程与GCD文章目录参考文章什么是GCD多线程编程进程与线程进程:线程:并发和并行零碎笔记GCD的内存管理dispatch_get_global_queueDISPATCH_DECLdispatch_async和dispatch_sync。问题1并不是每个分配一个线程,就像for循环十个,不会创建十个线程,在循环中,前面用完的可以给后面用。2在执行viewDidLoad之前就已经把任务加上去了,所以viewdidLoad中添加任务是添加额外的任务,回加到最后面。3什么是

2020-08-21 21:47:20 1183

原创 三次拯救

文章目录三次拯救的使用时机三次拯救流程第一次拯救——动态方法解析第二次拯救——备用接收者第三次拯救——完整的消息转发三次拯救的使用时机在编译期间向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法,所以编译期在编译时还无法通知类中到底会不会有某个方法实现。objc_msgSend函数objc_msgSend(void /* id self, SEL op, ... */ )这个原语函数参数可变,第一个参数填入消息的接收者,第二个参数就是消息"选择子",后面跟着可选的消息的参

2020-08-06 00:43:40 152

原创 属性关键字

参考文章从atomic关键字说到多线程安全(内含iOS给代码加锁方法总结)自旋锁和互斥锁区别文章目录参考文章原子相关atomic两种锁——自旋锁和互斥锁互斥锁(mutexlock):自旋锁(spinlock):nonatomic关于线程安全原子相关atomicatomic是默认的原子操作关键字,atomic也就代表其具有原子性atomic 属性关键字会给该 property 的 getter和setter方法加锁,但不能保证线程一定安全并且会带来更多损耗。两种锁——自旋锁和互斥锁互斥锁(m

2020-08-05 21:40:57 455

原创 Category

1

2020-08-05 16:24:10 360

转载 .framework和库的概念(转载的)

转载自iOS 开发之 .framework是什么?在 iOS 开发中,我们经常看到.framewrok 文件,那么这个文件到底是怎么来的,有什么作用?文章目录转载自[iOS 开发之 .framework是什么?](https://www.jianshu.com/p/5431e5c3645d)什么是“库”?开源库闭源库静态库动态库.framework制作静态库什么是“库”?首先引入“库”的概念。这可不是“库克”的“库”,“库”就是程序代码的集合,将n个文件组织起来,是共享程序代码的一种方式。库分为开源

2020-08-04 11:10:23 469

原创 RunLoop

文章目录参考资料什么是Runloop参考资料iOS开发-RunLoop详解什么是Runloop

2020-07-31 21:20:56 231

原创 volatile @required @optional

这篇博客记录一下一些变量名之类的东西文章目录volatilevolatile一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:• 并行设备的硬件寄存器(如:状态寄存器);•一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);• 多线程应用中被几个任务共享的变量

2020-07-31 21:20:29 173

原创 Tagged pointer和nonpointer

文章目录原文链接产生原因64位系统下 有些对象占用内存翻倍TaggedPointer原文链接产生原因在 2013 年 9 月,苹果推出了 iPhone5s,与此同时,iPhone5s 配备了首个采用 64 位架构的 A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于 64 位程序,引入 Tagged Pointer 后,相关逻辑能减少一半的内存占用,以及3 倍的访问速度提升,100倍的创建、销毁速度提升。64位系统下 有些对象占用内存翻倍假设我们要存储

2020-07-30 10:17:46 1118

原创 OC转C++

OC转C++文件xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc /Users/puyuerong/Desktop/源码/objc4-test/main.m -o main_cpp.cpp

2020-07-28 15:15:56 212

原创 Runtime

慎入还没写完!!!笔记参考苹果系统和UNIX系统baiios是基于Darwin(unix的分支之一)并非原始的unix系统,因此ios简单du说既是unix的一部分又不zhi同于unix的一个系统。iOS是由苹果公司为daoiPhone开发的操作系统。它主要是给iPhone、iPodtouch、iPad以及AppleTV使用。就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。Runtime消息传递一个对象的方法像这样[obj foo],编译器转成消息发送objc_

2020-07-21 22:52:31 447 1

原创 一些问题

小蓝书127页上面那个代码说在手动引用计数时,实力变量_object并不会自动保留其值,用new方法创建出来的 本来就持有了呀 应该和ARC一样吧小白书超出作用域后的释放有无顺序。ARC是OC的内存管理机制,那C的变量是要等程序结束后再销毁吗...

2020-07-15 23:41:14 72

原创 暑假ARC学习笔记

看的小蓝书第29条——理解引用计数引用计数工作原理方法调用retain:递增引用计数release:递减引用计数autorelease:待稍后清理自动释放池时,在递减引用计数。注意事项:不要像下面这样编写代码 虽然下面这个程序不会出错 当number的引用计数为0时 这样写导致以下结果程序崩溃 引用计数为0 所占内存也许被回收。尚未覆写对象内存,对象仍然有效,程序不会崩溃。因为对象所占内存 存在“解散分配”后,只是放回可用内存池。NSNumber *number = [[NS

2020-07-13 20:56:37 171

原创 拷贝&isEqual&NSString的三种创建方式

浅拷贝:不可变对象的不可变拷贝是浅拷贝,别的都是深拷贝(单层深拷贝)。isEqual、isEqualToString和等号isEqual: 判断两个对象的等同性,首先判断两个对象的地址是否相同,再判断类型是否一致, 然后再判断对象的具体内容是否一致isEqualToString: 直接判断字符串内容是否相等==: 对于基本数据类型, ==运算符比较的是值; 对于对象类型, ==运算符比较的是对象的地址是否相同NSString的创建直接创建 stringWithString、Str

2020-07-11 23:38:11 142

原创 把输入的字符串转化为数字

输入的字符串转换为数字- (float)Transform:(NSMutableString *)str { int flag = 0, zhen = 1; float sum = 0, temp = 0, t = 0.0; if ([str characterAtIndex:0] == '-') { zhen = 0; } else { temp = (int)[str characterAtIndex:0] - 48; }

2020-07-06 22:25:13 1429

原创 github详解和上传流程

MAC上git的配置学长的学习笔记看了的git和github的关系首先,Git比GitHub出生的早。事件回到2005年,有个公司不允许linux系统继续免费使用它们的版本控制软件了,然后linux系统创始人Torvalds一气之下花了10天时间创造了Git(第一个版本),并且开源给所有人免费试用。3年后,Tom Preston使用Git作为版本控制软件创建了http://Github.com,一个专门托管代码并且可以实现版本控制的网站。Tom之所以把网站叫做Github,是因为其核心部分版本控制是

2020-06-14 00:58:48 598 2

原创 github操作

git配置git使用

2020-06-05 10:56:56 92

原创 获取农历日期

原文链接+(NSString*)getChineseCalendarWithDate:(NSDate *)date{ NSArray *chineseYears = [NSArray arrayWithObjects: @"甲子", @"乙丑", @"丙寅", @"丁卯", @"戊辰", @"己巳", @"庚午", @"辛未", @"壬申", @"癸酉", @"甲戌", @"乙亥", @"丙子", @"

2020-05-28 14:43:09 217

原创 接口与API设计

一、用前缀避免命名空间冲突OC里没有命名空间的概念(namespace)。于是,我们需要给类加前缀,避免重名,避免发生命名冲突。当然,不仅是类名,一些全局变量和方法也需要加上适当的前缀加以区分。所以,我们要:选择与公司、工程相关的前缀作为类名的前缀。使用Cocoa创建应用程序时一定要注意,Apple宣传其保留所以使用“两字母前缀的权利”,所以你自己选用的前缀应该是三个字母的。如果用第三方库编写自己的代码,并准备将其再发布为程序库供他人开发一应用程序所使用,尤其要注意符号问题,你的程序库所包含的那

2020-05-24 15:38:37 134

原创 协议与分类

协议OC语言中有一项特性叫做“协议”,与Java中的“接口”类似。OC不支持多重继承,因而我们把某个类应该实现的一系列方法定义在协议里面。协议最为常见的用途是实现委托模式,当然也有其他用法通过委托与数据源协议进行对象间通信对象之间经常需要互相通信,而通信方式有多种。OC开发者广泛使用一种名叫“委托模式”的编程设计模式来实现对象间的通信。该模式的主旨是:定义一套接口,某对象若想接受另一对象的委托,则需要遵从此接口,以便成为其“委托对象”。而这另一对象则可以回传一些信息,也可以在发生相关事件时通知委托对象

2020-05-17 23:01:15 165

原创 iOS响应者链和事件传递

iOS的事件1、触摸事件2、加速计事件(运动事件)3、远程控制事件UIResponder(响应者对象)UIResponder是iOS中用于处理用户事件的API,可以处理触摸事件、按压事件(3D touch)、远程控制事件、硬件运动事件。可以通过touchesBegan、pressesBegan、motionBegan、remoteControlReceivedWithEvent等方法,获...

2020-04-03 23:25:39 127

空空如也

空空如也

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

TA关注的人

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