- 博客(77)
- 收藏
- 关注
原创 AutoreleasePool
AutoreleasePool 是什么:AutoreleasePool是 Objective-C 开发中的一种自动内存回收管理的机制,为了替代开发人员手动管理内存,实质上是使用编译器在适当的位置插入release、autorelease等内存释放操作。当对象调用 autorelease 方法后会被放到自动释放池中延迟释放时机,当缓存池需要清除dealloc时,会向这些 Autoreleased ...
2021-09-18 17:27:06 183
原创 内存管理
引用计数管理内存的思考四大原则:自己生成的对象,自己持有非自己生成的对象,自己也能持有不再需要自己持有的对象及时释放无法释放非自己持有的对象(直接crash)注:释放非自己持有的对象crash以 alloc,new, copy,,mutableCopy这些方法开头的方法名会被默认标记为 __attribute((ns_returns_retained)),以这些方法创建的对象,编...
2021-09-18 17:26:02 118
原创 Python之[::-1]
这是python的slice notation的特殊用法:首先,声明一个列表a = [0,1,2,3,4,5,6,7,8,9],b = a[i:j] 表示复制a[i]到a[j-1],生成新的list对象b = a[1:3] 那么,b的内容是 [1,2]当i缺省时,默认为0,即 a[:3]相当于 a[0:3]当j缺省时,默认为列表的长度len(a)...
2019-05-09 18:45:00 1047
原创 Tensorflow MAC运行环境安装
1、MAC一般自带Python2.7版本,可以到官网下载安装指定的Python版本2、使用命令‘curl https://bootstrap.pypa.io/get-pip.py | python3’安装pip33、使用命令‘pip3 install --upgrade tensorflow’安装,安装结束TensorFlow的运行环境就安装成功,此时...
2019-04-26 09:19:00 119
原创 iOS开发性能相关
性能指标:内存 ,应用运行所需的RAM最小值,以及应用小号的内存平均值和峰值。电量消耗初始化时间执行速度响应速度本地存储互操作性网络环境带宽数据刷新多用户支持单点登录安全崩溃性能的分析(分析的手法)采样,采取一定的周期内的状态。埋点,通过代码记录细节信息,使采样更加精确。(埋点注入额外代码,对性能有一定影,对内存或速度(...
2019-03-09 22:22:00 132
原创 Runtime理解
Runtime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过...
2019-02-15 13:54:00 287
原创 iOS性能优化
CPU加载资源,对象创建,对象调整,对象销毁,布局计算,Autolayout,文本计算,文本渲染,图片的解码, 图像的绘制(Core Graphics)都是在CPU上面进行的。GPUGPU是一个专门为图形高并发计算而量身定做的处理单元,比CPU使用更少的电来完成工作并且GPU的浮点计算能力要超出CPU很多。GPU的渲染性能要比CPU高效很多,同时对...
2019-02-15 13:54:00 112
原创 2019-01-22
1、UIView同时设置touchHandler&GR(仅考虑单击事件),调用顺序是什么?iOS 事件分为三大类触摸事件加速器事件远程控制事件触摸事件是我们平时遇到最多的事件,例如单击、长按、滑动等等。当用户点击按钮,到按钮处理回调。整个过程是如何发生,需要什么样的原则,这些都是问题。为了使系统能更加鲜明符合用户的操作逻辑,iOS系统将...
2019-01-23 13:00:00 112
原创 2019-01-21
1、组件化image.png2、为什么必须在主线程操作UIUIKit并不是一个 线程安全 的类,UI操作涉及到渲染访问各种View对象的属性,如果异步操作下会存在读写问题,而为其加锁则会耗费大量资源并拖慢运行速度。另一方面因为整个程序的起点UIApplication是在主线程进行初始化,所有的用户事件都是在主线程上进行传递(如点击、拖动)...
2019-01-22 09:15:00 170
原创 struct 和 class
值类型 VS 引用类型值类型和引用类型的核心不同就是数据和数据的存储位置。我们用局部变量、参数、属性和全局变量来存储数据。存储数据有两种最基本的方式。对于值语义,数据是直接保存在变量中。对于引用语义,数据保存在其他地方,变量存储的是该数据的引用地址。当我们访问数据时,这种差异不一定很明显。但是拷贝数据时就完全不一样了。对于值语义,你得到的是该数据的拷贝...
2019-01-21 10:56:00 90
原创 Runloop理解
1.1 什么是 RunLoop?RunLoop 实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。RunLoop 在没有事件处理的时候,会使线程进入睡眠模式,从而节省 CPU 资源,提高程序性能。1.2 RunLoop 和线程RunLoo...
2018-12-18 10:58:00 154
原创 guard & defer
Swift 2.0 带来了两个新的能够简化程序和提高效率的控制流表达形式:guard 和 defer。前者可以让代码编写更流畅,后者能够让执行推迟。guardguard 是一个要求表达式的值为 true 从而继续执行的条件语句。如果表达式为 false,则会执行必须提供的 else 分支。func sayHello(numberOfTimes: In...
2018-12-17 11:58:00 147
原创 js中== 与 ===区别
==:运算符称作相等,用来检测两个操作数是否相等,这里的相等定义的非常宽松,可以允许进行类型转换===:用来检测两个操作数是否严格相等1、对于string,number等基础类型,==和===是有区别的不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等同类型比较,直接进行“值”比较,两者结果一样...
2018-11-30 13:27:00 94
原创 2018-11-27
1、代码DRY原则:Don't repeat yourself.2、不在代码中到处使用!important来打补丁3、深入理解选择符优先级、继承和层叠机制,了解盒模型各个部分,不会为外边距重叠而头疼。4、浏览器前缀:某个特性已经得到浏览器的支持,但是不同浏览器有细微的差别,绝大多数情况下可以通过同时使用各种不同的语法,最终通过层叠机制来确保哪条声明...
2018-11-28 08:47:00 111
原创 DDD(Domain Driven Design)领域驱动设计简摘
软件设计是一门艺术,像其他艺术一样,它不能通过定理和公式以 一门精确科学的方式被教授和学习。通过软件创建的过程,我们可 以发现有用的规律和技巧,但是我们也许永远不能提供一个准确的 方法,以满足从现实世界映射到代码模型的需要。如同一幅画或者 一个建筑,软件产品既包括设计和开发它的那些人的个人劳动,也 包括致力于它发端和成长的那些人的某些领导力和洞察力。“...
2018-10-29 15:20:00 97
原创 面向对象的SOLID原则
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Principle)的首字母缩写。缩写英文全称汉语SRPThe Single Responsibility Principle单一责任原则OCPThe Open Closed Principle开放封闭原则L...
2018-10-29 10:54:00 498
原创 2018-08-29
创建私有库 http://www.cocoachina.com/cms/wap.php?action=article&id=20188CocoaPods私有库可能遇到的坑 https://www.jianshu.com/p/bdb1db6c9db4
2018-08-29 11:55:00 76
原创 xcode中添加调色板
在nib中设置颜色的时候,每次都输入十六进制的色值,比较麻烦,那我们就可以添加一个属于自己的调色板,来减少操作,操作步骤.gif还可以在 资源库 -> Colors 这个文件夹下,找到刚才设置的调色板名字对应的.cls文件分享给小伙伴,就可以快速的打开,进入666的开发状态啦! ...
2018-07-25 11:13:00 337
原创 IOC 控制反转
IOC是面向对象编程中的一种设计原则,可以借助“第三方”来减低计算机代码之间的"耦合度 ",其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖...
2018-07-20 14:44:00 95
原创 OC中下划线和self.的区别
1.通过self. 访问,包含了set和get方法。通过下划线是获取自己的实例变量,不包含set和get的方法。2.self.是对属性的访问,而下划线是对局部变量的访问。在使用self.时是调用一个getter方法。会使引用计数加一,而下划线不会使用引用计数器加一的。所有被声明为属性的成员,在iOS5之前需要使用编译指令@synthesize 来告诉...
2018-06-21 15:04:00 422
原创 更改push时UIViewController出现的方式
CATransition* transition = [CATransition animation]; //改变视图控制器出现的方式 transition.type = kCATransitionPush; //改变视图控制器出现的位置 transition.subtype = kCATransitionFromLeft;...
2018-05-22 16:11:00 161
原创 工厂方法(Factory method)
一、本质:是一种实现了“工厂”概念的面向对象设计模式,处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。二、要解决的问题:是对象的创建时机,它提供了一种扩展的策略,很好地符合了开放封闭原则。工厂方法也叫做虚构造器(Virtua...
2018-05-11 11:45:00 227
原创 利用strings 检测iOS ipa包是否调用私有api
在菜单中找到Windows -> Orgainer1然后选中其中你要检测的文件那一栏,右键Show in Finder,右键.xcarchive文件显示包内容,在下图路径下找到.app文件,cd到该文件路径下:2此时,可以通过两种方式可以检测打包文件是否包含字符串 (1) strings - -a ...
2018-04-08 10:49:00 936
原创 swift循环引用
ARC仅仅能对类的实例做内存管理,也就是只能针对引用类型.结构体和枚举都是值类型,不能通过引用的方式来传递和存储,所以ARC也就不能对它们进行内存管理.和OC一样,Swfit默认也是基于ARC进行内存管理的,因此虽然简单,但如果不注意任然会出现循环引用问题(Retain cycle),导致内存泄露。在OC中,可以很简单的举出一个循环引用的例子。比如...
2018-04-04 17:01:00 125
原创 weakSelf定义成宏
在程序中我们经常用到Block,处处都写weak self 的话会比较繁琐,我们可以把它定义成宏,提高代码的简洁度和可读性:#define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;用法如下:WS(weakself)...[weakSelf doSomething]; ...
2018-04-02 13:08:00 589
原创 Core Foundation 对象的内存管理
底层的Core Foundation 对象,大多数以xxxCreateWithxxx这样的方式创建,例如:#import "TestViewController.h"#import <CoreText/CoreText.h>@interface TestViewController ()@end@implementation Te...
2018-04-02 11:31:00 112
原创 多态
1.什么是多态?在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。使不同的对象以自己的方式响应相同名称...
2018-03-19 14:27:00 71
原创 20180315随笔
APP方向和运营都没做好,跟不上时代发展,失败是必然创业不能只靠一个APP,商业不等于编出一个APP微信,从一开始,就是让更多人白打工,先是压榨人们的沟通,后是压榨作者的劳动,现在要压榨程序员的劳动。信息发布类APP的功能性和娱乐性 ...
2018-03-15 20:11:00 82
原创 git将本地代码推到远程仓库
将本地代码推到远程仓库的步骤如下:1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库git init2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件git add .3、用命令 git commit告诉Git,把文件提交到仓库。...
2018-03-15 18:34:00 963
原创 swift之fallthrough用法
fallthrough由于swift中的switch语句中可以省去了break的写法,但在其它语言中省去break里,会继续往后一个case跑,直到碰到break或default才完成。在这里fallthrough就如同其它语言中忘记写break一样的功效。1. let integerToDescribe = 1 2. var descript...
2018-03-14 10:05:00 233
原创 swift 之 is与as解析
Swift是强类型语言,但也允许开发者通过is、as?和as!这三种操作来对类型进行判断和强制转换。其中is用作类型判断,而as?和as!则分别是类型转换的可选形式和强制形式。1、is操作符:类型判断is操作用来判断某一个对象是否是某一个特定的类,它会返回一个bool类型的值。is操作的逻辑很简单,某一个类的对象肯定是自己这个类,也一定是自己的超类,但...
2018-03-14 10:02:00 547
原创 文章收集
1、关于成长,你不妨看一下这五本书。https://www.jianshu.com/p/a1c0c751a576?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation ...
2018-01-25 11:55:00 66
原创 Markdown使用之创建表格
NameAcademyscoreHarry PotterGryffindor90Hermione GrangerGryffindor100Draco MalfoySlytherin90第一行为表头,第二行分隔表头和主体部分,第三行开始每一行代表一个表格行;列与列之间用管道符号 “|” 隔开,原生方式的...
2018-01-25 11:52:00 243
原创 MAC终端命令
目录操作命令名功能描述使用举例mkdir创建一个目录mkdir dirnamermdir删除一个目录rmdir dirnamemvdir移动或重命名一个目录mvdir dir1 dir2cd改变当前目录cd dirnamepwd显示当前目录的路径名pwdls显示当前目录的内容l...
2018-01-25 11:46:00 150
原创 2018-01-24
第一课:为什么计算机视觉能够发展迅速大数据以及算法开发将会使智能系统的测试误差逐渐趋近于贝叶斯最优误差。这个结果将会导致人工智能的表现全方位超越人类,其中包括自然识别方面的工作。像TensorFlow这样的开源软件,就可以帮助你用迁移学习的方法迅速实现其任何物体的探测器。用迁移学习的方法你只需要大约100-500个训练实例就可以得到很好的结果。手动标...
2018-01-24 16:56:00 62
原创 OC属性和成员变量在.h文件和.m文件区别
区别就是:在.h文件中声明的属性,外部类可以通过“类实例.属性”来调用,但在.m中声明的则不可以,获取和设置的方法,只能是通过setValue:forKey和valueForKey来实现。成员变量,有三种权限,就是大家都知道的@private、@protected、@public ,写在.m文件中时,相当于是@private权限,子类无法访问,验证了...
2018-01-23 08:56:00 324
原创 杂记
仔细观察,你会发现每一位能把生活过成诗的人都是时间管理的高手,更是精力管理的专家。市面上教大家如何进行时间管理的书籍很多,分享精力管理的文章也不在少数,但都局限在一个领域,没能将两者有机结合在一起。其实,时间管理和精力管理都是我们人生中不可或缺的两项技能,二者相辅相成、结合在一起便会产生1+1>2的效果。对于重要紧急的事情就立刻着手去做,而对于不重要的事情...
2018-01-22 21:53:00 54
原创 iOS多线程同步问题
当我们进行多个请求,需要所有的请求完成后发出个通知的情况下(以多个网络请求为例),有两种处理方法:1、通过添加标识来判断请求是否全部结束用一个变量记录完成请求的个数,然后在单个网络请求结束回调的时候判断当前完成的网络请求个数是否和总的网络请求个数相等,如果相等则说明请求结束。2、dispatch_group + 信号量- (void)loadReq...
2018-01-22 16:20:00 95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人