自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(417)
  • 收藏
  • 关注

原创 【App启动速度怎么做控制和优化】学习笔记

App的启动分为冷启动和热启动。以下讲述的是冷启动。app启动时做了什么?

2024-04-14 17:08:38 186

原创 iOS分类和扩展的区别

分类:在不改变原有类的基础上(私有类),为原有类添加方法。不可定义属性,只能定义getter和setter方法。扩展:也叫做匿名分类,为原有类添加私有变量和属性。

2024-04-13 17:20:46 214

原创 Masonry的实现原理

核心是基于NSLayoutConstraint自动布局来实现的NSLayoutConstraint如何进行约束布局?1、要实现自动布局,必须把该属性设置为NOview.translatesAutoresizingMaskIntoConstraints = NO2、然后使用 addConstraint添加约束[self.view addConstraint:[NSLayoutConstraint constraintWithItem:viewattribute:NSLayoutAttri

2020-07-07 09:27:09 1020

原创 block

在block内部如何修改block外部变量,为什么?使用__block.block不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址。block也是一种函数,但是block的执行并不一定发生定义的函数内,如果在block中操作的栈区的变量等于访问了野指针。__block所以起到的作用只是观察到该变量被block所持有,就将“外部变量“在栈中的内存地址放到堆中(就是拷贝一份放在堆中),进而block内部也可以修改外部变量的值。这时候block内部访问的值是这个“外部变量“在堆

2020-05-31 13:29:11 182

原创 iOS RunLoop

简介我们的应用可以在无人操作的时候休息,有事件的时候又立刻响应,因为有runloop的存在。runloop代表正在运行的循环,runloop是为线程而生,每个线程都有与之对应的runloop。主线程的runloop是默认启动的,由UIApplicationMain函数创建,对于其他线程来说,runloop默认是没有启动的。runloop内部实现runloop和mode的关系(图出自底下参考博客中,侵删)一个runloop 有多个mode 一个mode有若干个...

2020-05-31 13:02:28 189

原创 消息转发 _objc_msgForward

过程1、调用resolveInstanceMethod:方法(或resolveClassMethod:)允许用户在此时为该类动态添加实现。如果这个方法有实现,那么重新开始objc_msgSend流程(这个方法中可以调用class_addMethod进行动态方法添加)2、没有实现步骤一的动态添加方法的话,调用forwardingTargetForSelector:方法,尝试找到一个能响应该消息的对象,如果获取到,则直接把消息转发给它,否则执行步骤33、调用methodSignatureSelect

2020-05-31 11:53:28 233

原创 运行时相关

1、objc中向一个nil对象发送消息会发生什么?不起作用,但不会奔溃原因:objc是动态语言,每个方法在运行时会被动态转为消息发送,即objc_msgSend(receiver,selector)objc_class的源码定义// runtime.h(类在runtime中的定义)// http://weibo.com/luohanchenyilong/// https://github.com/ChenYilongstruct objc_class { Class is.

2020-05-24 12:45:19 118

原创 Copy相关

怎么用copy关键字?1、NSString、NSArray,NSDictionary等经常使用copy关键字,是因为它们有可变类型2、block也经常使用,因为在MRC中,方法内部的block是在栈区的,使用copy可以把它放在堆区,在ARC中写不写都行,对block使用strong和copy都是一样的,但是使用copy更好。深拷贝和浅拷贝浅拷贝就是拷贝指针,深拷贝是拷贝内容集合的浅拷贝 进行浅拷贝,会向原始的集合发送retain消息,引用计数+1,所以copy后的指针...

2020-05-24 11:57:50 246

原创 protocol 和category如何使用property?

protocol在protocol中使用property,只会生成setter和getter方法的声明。当使用的时候使用systhsize name; 自动生成getter、setter 或者手动自己添加getter、setter和实例变量category和protocol不同的是,在category的时候已经不允许在类中在加入实例变量。(编译的时候,对象的内容布局已经确定)需要借助函数objc_setAssociatedObject 和 objc_getAssociatedObject

2020-05-24 11:53:01 238

原创 iOS Runtime实现weak属性

weak的特点: 同assign一样,是一种非持有关系,不同在于当属性所指对象被释放后,属性值也会自动清空。如何实现?当你初始化一个weak变量的时候,runtime会调用objc_initweak(id * object, id value)id __weak obj1 = obj;objc_initWeak(&obj1, obj);objc_initweak-> objc_storeWeak(object, value)首先通过value去找它对应的弱引用表

2020-05-17 11:03:08 460

原创 @property相关知识点

@property有哪些属性关键字?readonly 只读 assign 单纯赋值(非对象类型使用) unsafe_unretained 同assign一样 用于ARC retain 进行对象保持操作 strong 同retain 用于ARC weak 若引用 用于ARC copy 复制对象 (生成副本进行赋值,但只适用于遵...

2020-05-05 16:01:40 296

原创 iOS事件的传递和响应

整体流程:发生触摸事件后,系统把事件交给一个由UIApplicaition管理的事件队列中(FIFO);UIApplication会从事件队列中拿出最前面的事件,并将这个事件分发下去,先给keywindow;keywindow在视图层次结构中找到一个最适合的视图来处理触摸事件,找到合适的就调用视图控件的touches方法来进行具体的事件处理。事件的传递关键是为了找到合适的view进行处理触...

2020-05-05 15:40:15 120

原创 CodeForces463C Gargari and Bishops(贪心)

CodeForces463C Gargari and Bishops(贪心)CodeForces463C题目大意:在国际象棋的棋盘上放两个主教,这个两个主教不能攻击到同一个格子,最后的得分是这两个主教的攻击的格子上的分数之和。求最大的分数。解题思路:因为攻击的范围是对角线,所以两个主教一个在黑格,一个在白格。画个图就可以发现一旦一个主教放在了黑格,那么剩下的黑格是都不能在放主...

2015-06-05 11:10:39 773

原创 CodeForces 461A Appleman and Toastman(贪心)

CodeForces 461A Appleman and Toastman(贪心)CodeForces 461A题目大意: 有两个朋友在玩游戏,游戏规则如下:每次朋友A收到一个集合的数字,那么总分便加上这个集合的数字之和。之后朋友A把这个集合的数字给朋友B,朋友B会将这个集合拆分成两个非空的集合,然后再将这两个集合一个一个的返回给A。朋友B如果收到了一个只有一个数的集合,那么便

2015-06-05 11:02:53 587

原创 CodeForces 449AJzzhu and Chocolate(贪心)

CodeForces 449AJzzhu and Chocolate(贪心)CodeForces 449A题目大意: 一块N*M的巧克力,指定K次切割,切割的要求看题目。问能否使得最小的那块巧克力的面积最大。如果不能进行K次切割输出-1.解题思路: 要使得切割后最小的巧克力的面积最大,那么尽量是朝一个方向切割是最优的。代码:#include

2015-06-05 10:56:40 614

原创 ZOJ3820 Building Fire Stations(贪心)

ZOJ3820 Building Fire Stations(贪心)ZOJ3820题目大意: 给定一棵树,希望选取两个结点做消防站,使得其余的节点到达消防站的距离最大值最小。解题思路: 二分长度,判断是否可行。 判断长度L过程中,任选一个点作为根节点,利用bfs找出最远的点,然后选择相隔L的节点作为第一个消防站,然后再以这个节点为根结点进行遍历,同样也是找出最远

2015-06-05 10:49:30 1187

原创 ZOJ3829Known Notation(贪心)

ZOJ3829Known Notation(贪心)ZOJ3829题目大意:给出一个表达式,希望将这个表达式转成合法的后缀表达式。这个表达式的空格全部丢失,因此相邻的多个字母,可以看成1个,也可以看成多个。解题思路:我们先需要判断一下数字和乘号的个数关系,如果数字不足,那么后面进行的操作自然是插入数字更好点,如果数字足够了或者是太多,那么碰到*号时如果数字不足,那么自然是将当

2015-06-05 10:39:15 547

原创 CodeForces479C Exams(贪心)

CodeForces479C Exams(贪心)CodeForces479C题目大意: 有位同学参加N门考试,他希望能够提前的结束这N门考试,所以和各门科目的老师协商了一下,换一天考试Ai,然后他又希望成绩的录入时间是非递减的,成绩的录入时间是按照科目原本的考试时间。求最后一门科目的结束时间,越早越好。解题思路: 将原本的考试时间按照时间先后排序,如果两门课在同一天

2015-06-05 10:26:41 1087

原创 CodeForces484A Bits(贪心)

CodeForces484A Bits(贪心)CodeForces484A题目大意:给出范围【A,B】,期望你给出某个数X满足X属于【A,B】,并且X转成二进制的1的个数最多。如果有多个给出最小的数。解题思路:因为需要1最多,那么我们先将每个位都放上1,如果这个数减掉了某一位的1还是超出了范围,那么就可以去掉这个1;如果去掉后发现比A小了,那么这个位置上的1是不能去掉的。直

2015-06-05 10:16:52 750 1

原创 CodeForces 486C Palindrome Transformation(贪心)

CodeForces 486C Palindrome Transformation(贪心)CodeForces 486C题目大意: 将一个不是回文的字符串通过最少的操作使之成为回文串。 操作,左移1位,右移1位,字母+1,字母-1,这些操作到达边界时是有循环的效果的,例如位置到达最后一位往右移动,那么就到达了第一位。解题思路: 首先需要统计一下有多少个位置是不匹

2015-06-05 10:06:58 822

原创 CodeForces 492C Vanya and Exams

CodeForces 492C Vanya and Exams CodeForces 492C题目大意: 有一位同学要参加N门科目的考试,每门科目的满分固定,现在这位同学为了拿到奖学金需要达到平均分S,这就需要它在原来的基础上对某些科目的分数进行提升,然后提升每门科目需要做Ai个测试,于是希望能够做尽量少的测试能够使得分数达到平均分。解题思路: 将所有的科目按照对应的测

2015-06-05 09:56:02 612

原创 CodeForces 490E Restoring Increasing Sequence(贪心)

CodeForces 490E Restoring Increasing Sequence(贪心)CodeForces 490E题目大意:给N个正整数,然而这些正整数中间有些数字是被‘?’遮挡住了,每个‘?’可以还原回一个数字,希望给定的这N个整数形成一个递增的序列。可以的话,给出这N个整数的序列,不行返回N0.解题思路:每个整数都在满足条件的情况下尽量的小,写了一个非递归

2015-06-05 09:50:07 844

原创 kruskal求得的生成树是最小生成树的证明

kruskal求得的生成树是最小生成树的证明给一带权连通的树一定会有至少一棵生成树,那么这些生成树中间必然会会存在至少一棵最小生成树。 假设T是用kruskal求出来的最小生成树,而U是这个图的最小生成树,如果U == T,那么证明结束。 然而如果T != U,那么至少存在一条边在T中,不在U中。那么我们希望证明T和U中所有边的权值之和是相等的。假设存在k条边存在T中不存在U中

2015-05-30 21:24:35 1925

原创 POJ2377Bad Cowtractors(最大生成树)

POJ2377Bad Cowtractors(最大生成树)POJ2377Bad Cowtractors题目大意:给一个带权无向图,求最大生成树。解题思路: 因为最小生成树按照kruskal的贪心算法是可以证明正确的,那么反向我们取最大的权值的边,然后不断的加入形成的生成树就是最大生成树。代码:#include #include using na

2015-05-30 20:55:46 632

原创 UVA125 - Numbering Paths(floyd)

UVA125 - Numbering Paths(floyd)UVA125 - Numbering Paths题目大意: 给m条有方向的边,然后要求你给出N * N的矩阵,矩阵G【i】【j】代表的是i到j之间的总路径数,如果i到j之间存在着环,那么G【i】【j】 = -1.解题思路: i到j的路径数目等于i到k乘以k到j(经过k到达的话)。用floyd可以求出i到j

2015-05-28 21:56:58 806

原创 HDU4463Outlets(最小生成树)

HDU4463Outlets(最小生成树)HDU4463Outlets题目大意: 需要新建一个mall,里面有很多的商店,希望修最短的路,使得里面的店联通,可以通过别的店间接的联通,但是有规定两家店一定要直接的联通。求在这样的条件下的最短的路径。解题思路: 最小生成树,只是前提是先要使得要求的两个结点先联通。代码:#include #inclu

2015-05-28 21:45:16 543

原创 UVA104Arbitrage(floyd最短路)

UVA104Arbitrage(floyd最短路)UVA104Arbitrage题目大意: 给你两两国家之间的汇率,要求你从任何一个国家出发,身上带着1(单位不明),然后回到这个国家时,身上的钱能够> 1.01.并且如果这样的路径有多条的话,希望的到的是最短的路径,并且还有要求你输出这个最短的路径。解题思路: 利用floyd可以求出旅游任何两个国家的可以得到的最大的

2015-05-28 21:31:55 864

原创 UVA558 - Wormholes(BellmanFord判负环)

UVA558 - Wormholes(BellmanFord判负环)UVA558 - Wormholes题目大意: 有一个教授希望利用虫洞回到过去(还是从这个虫洞出来就到达了过去),给你虫洞形成的有向图,问教授能否回到过去。解题思路: 利用BellmanFord判负环,如果不存在负环的话,那么最多经过N - 1次迭代就可以得到最短路,因为形成最短路最多N - 1个节

2015-05-28 21:08:06 765

原创 UVA10099 - The Tourist Guide(floyd + 最小值的最大化)

UVA10099 - The Tourist Guide(floyd + 最小值的最大化) UVA10099 - The Tourist Guide题目大意: 给一无向图,图上的点代表城市,边代表路,每条边上的权值代表的是这条路上的巴士的最大乘客数,作为导游,给定起点和终点,和负责的游客,问需要的最少的趟数可以将这个游客送到终点。解题思路: 路径上最小值的最大化。减少趟

2015-05-28 20:53:15 627

原创 UVA10048 - Audiophobia(Floyd,最大值的最小化)

UVA10048 - Audiophobia(Floyd,最大值的最小化)UVA10048 - Audiophobia题目大意:给定一无向图,每条边都有一个权值,现在给你起点和终点,要求你找出起点到终点途经的边的最大值,要求这个值尽量小,到不了输出no path。解题思路:在floyd过程中,就可以记录下来。G【i】【j】 = min(G【i】【j】, max(G【i】【k

2015-05-28 20:18:44 601

原创 UVA10034 - Freckles(最小生成树)

UVA10034 - Freckles(最小生成树)UVA10034 - Freckles题目大意: 给你n个雀斑的位置,每个雀斑看作一个点,问使得这个雀斑相互连通的最短的路径长度,最小生成树的问题。代码:#include #include #include using namespace std;const int maxn = 105;dou

2015-05-28 20:09:23 723

原创 UVA - 658 It’s not a Bug, it’s a Feature!(优先队列Dijkstra)

UVA - 658 It’s not a Bug, it’s a Feature!(优先队列Dijkstra)题目链接题目大意:补丁和漏洞之间的修复问题。有n种漏洞,m种补丁,接着给你m行代表的是n种补丁使用的情况。前面的n个字符表示的是补丁的使用前提,后面的n个字符表示的是补丁使用完后的漏洞状况。字符‘0’代表的是这个漏洞存不存在都没关系,‘+’代表的是这个漏洞存在或者出现, ‘-’代表

2015-03-09 10:49:08 653

原创 UVA - 10801Lift Hopping(Dijkstra)

UVA - 10801Lift Hopping(Dijkstra)题目链接题目大意:有n个电梯,每个电梯有制定停靠的楼层,如果你从一个电梯换乘另一个电梯需要等待60s。一开始你在0层,在0层的时候不需要等待。现在指定你要到的楼层,问你通过这n个电梯到达目标楼层的最快时间。解题思路:这题是最短路算法,但是不容易转化,因为你需要先处理出可以停靠的任意两个楼层之间的最短时间,然后再转换成你从

2015-03-09 10:34:16 633

原创 UVA - 567 Risk(Floyd)

UVA - 567 Risk(Floyd)题目链接题目大意:有20个城市,输入给19行,每行先给有几个数,然后接着给出这几个数,代表的是后面的城市编号和行编号(城市编号)有一条边,每条边的权值为1.接着m个查询任意两个城市之间的最短距离。解题思路:求任意两个顶点之间的距离,用floyd。代码:#include const int maxn = 21;const i

2015-03-09 10:18:21 690

原创 UVA10986 - Sending email(Dijkstra)

UVA10986 - Sending email(Dijkstra)题目链接题目大意:给n个点,m条边,还有起点和终点,问起点到终点的最短距离,不可达unreachable。解题思路:最短路问题,dijkstra算法。代码:#include #include #include #include using namespace std;using std:

2015-03-09 10:11:05 719

原创 UVA10397 - Connect the Campus(最小生成树+并查集)

UVA10397 - Connect the Campus(最小生成树)题目链接题目大意:给你n个点,然后再给你m个已经连接的边,问如何使得所有的点都相连并且新建的边长度之和最小。解题思路:最小生成树,但是有m条边是已经建好的,就将这些边的权值变成0,然后用kruskal的方法来求长度。代码:#include #include #include #include

2015-03-08 13:13:43 668

原创 UVA 10369- Arctic Network(最小生成树)

UVA 10369- Arctic Network(最小生成树)题目链接题目大意:北极有n个前哨点,如果两个前哨点都有安装无线卫星,那么它们就可以互相通信,然而现在只有m - 1 个前哨点安装了无线卫星,其余的n - m + 1 个航哨点就需要安装有线,有线的成本和之间的距离成正比,所以要求你找出最小的d(两个前哨点之间的距离),能够使得任意的前哨点之间可以通信。解题思路:最小的d,也

2015-03-08 11:31:27 705

原创 UVA10158 - War(并查集)

UVA10158 - War(并查集)题目链接题目大意:有n个国家,每个国家有友国和敌国,并且遵守着朋友的朋友是朋友,敌人的敌人是朋友的原则,给你四种操作,题目中有描述,然后让你根据操作进行,对应输出相应的结果。解题思路:题目里面有敌对关系和朋友关系,朋友的关系可以使用并查集,但是敌对的关系是不行的。转化敌对的关系。假设0~n - 1,代表国家。n~2 * n - 1 代表0~n -

2015-01-21 15:12:44 796

原创 UVA 10023 - Square root(手算平方根)

题目:UVA 10023 - Square root(手算平方根)题目链接题目大意:求给定的一个数的平方根。解题思路:用二分但是这个数太大了,就超时了。看题接后发现需要用一种手算平方根的算法。算法: 先判断这个数是不是偶数位,是的话就第一次取前面的两位数,不是的话第一次就只取前面的一位数来作为被除数。接下来就是两位两位为一节来计算。 用前一次的计算结果乘上20+一个个位数a

2015-01-21 11:02:32 1244 1

原创 UVA10229Modular Fibonacci(矩阵快速幂)

UVA10229Modular Fibonacci(矩阵快速幂)题目链接题目大意:给你i和m,求Mi, Mi = (F(i - 1) + F(i - 2)) % 2^m;解题思路:因为Mi = (F(i - 1) % 2^m + F(i - 2)% 2^m) % 2^m = (M(i - 1) + M(i - 2)) % 2^m.类似于求fibonacci数加上取模,只是n

2014-12-13 11:24:27 681

空空如也

空空如也

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

TA关注的人

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