随笔笔记
HaiJunYa
积极认真 好记忆烂笔头
展开
-
Primary主类和Catagory分类都存在相同事件 逆向
Primary主类和Catagory分类都存在相同事件:优先访问分类中事件主类中存在testDescription事件补充类中存在testDescription事件访问顺序:优先访问补充分类中存在的事件(阶段1:寻找补充分类文件 阶段2:分类文件体系下逆向执行)...原创 2021-06-30 23:14:47 · 174 阅读 · 0 评论 -
Category
多个补充Category分类文件都包含相同的事件(compile sources优先执行下面的文件)原创 2021-04-14 13:23:19 · 114 阅读 · 0 评论 -
git机制
原创 2021-04-05 22:12:14 · 100 阅读 · 0 评论 -
系统自渲染弹窗
系统弹窗自出现原创 2021-03-26 10:31:33 · 97 阅读 · 0 评论 -
多线程研究
线程的研究使用:应用App当前只存在1个线程情形:1.同步+(主线程)串行:死锁(类似断点暂停)2.同步+(普通)串行 / 同步+全局并行/同步+(普通)并行: 只激活主main线程(block事件 内外待执行级别相同有序进行即可(逻辑由上而下顺序))3.异步+(主线程)串行:只激活主main线程(逻辑先执行外部指令再依次执行block事件内指令)应用App当前存在2个线程情形:4.异步+(普通)串行:激活1main线程+1个普通线程(1+1)应用App当前存在多个线程情形:5.异步原创 2021-03-22 17:00:45 · 248 阅读 · 1 评论 -
raw.githubusercontent.com port 443: Connection refused
Mac HomeBrew环境本身安装时遇到curl:(7) Failed to connect to raw.githubusercontent.com port 443: Connection refused解决:终端指令sudo gem install redis再次执行安装HomeBrew环境本身命令原创 2021-03-15 17:07:54 · 171 阅读 · 0 评论 -
Mac编写shell脚本文件
shell脚本是运行于unix和linux系统的脚本语言,类似于windwos下的.bat文件。1、打开MacVim文本编辑器,输入echo hello保存文件为.sh打开终端->切换路径(切换到.sh文件所在的上级文件夹)->chmod +x demo.sh回车(赋予文件可执行权限)->./demo.sh回车(./表示在当前目录下查找待执行的文件)...原创 2021-03-14 17:19:16 · 1717 阅读 · 0 评论 -
代码自动化格式工具
Android软件包apkiPhone软件包ipaMac软件包dmgwindow软件包exe终端 软件包 .tar/.gizxcode+oclint+xcpretty+JenkinsOCLint是静态代码分析工具。OCLint工具检查C/C++/ObjectiveC代码并寻找潜在问题来提高质量和减少缺陷:/else/try/catch/finally语句为空未使用的局部性临时变量和参数高圈复杂度,高NPath复杂度和高NCSS复杂度冗余if语句和无用的括号长方法名和长参数列表倒置逻原创 2021-03-09 23:25:23 · 687 阅读 · 0 评论 -
生成器模式/建造者模式(BuilderPattern)
生成器模式/建造者模式(BuilderPattern):通过多个简单对象累积逐步构建成目标复杂的对象。这种设计模式属于创建型模式,提供创建对象的某种方式。生成器模式/建造者模式的使用:在软件系统中有时候面临”某个极端复杂的对象"的创建需求,其通常由各个部分的子对象(部件对象)采用一定的算法构成;由于极端复杂需求的变化,这个极端复杂对象的各个部分经常面临着剧烈的变化,但是将各个部件组合在一起的逻辑算法却相对稳定。基本的部件对象本身不会变但部件的组合经常变化时。生成器(建造者)模式优点:建造者独立,易扩展原创 2021-03-08 10:37:54 · 168 阅读 · 0 评论 -
构造事件函数注意点
(UIViewController *)equalLevelObject {//同级别类return [UIViewController new];}(UIViewController *)lowerLevelObject {//子级别类return [ViewController new];}(UIViewController *)higherLevelObject {//父级别类return (UIViewController *)[UIResponder new];}..原创 2021-03-06 17:09:44 · 89 阅读 · 0 评论 -
响应链原理
[self.view addSubview:self.view1]; self.view1.frame = CGRectMake(10, 50,kScreenW*0.7, kScreenH*0.6); [self.view1 addSubview:self.view11]; self.view11.frame = CGRectMake(0, 0, kScreenW*0.5, kScreenH*0.5); [self.view1 addSubview:self.view1.原创 2021-03-04 22:09:56 · 191 阅读 · 1 评论 -
layoutSubviews数据计算/drawRect视图重绘:
layoutSubviews方便数据计算layoutifneeded也采用了同样的机制来避免资源的重复调用资源浪费! drawRect方便视图重绘:假设采用直接调用drawRect的机制,先考虑这样问题 ,有两个UIViewControllerA和B,A为当前view的viewController,如果此时在A中调用[B.view drawRect],这样B的view无论如何都会调用drawRect的方法重新绘制一遍,这样问题就出来了,有必要吗,毕竟现在显示的是A中的view!B重新绘制一遍原创 2021-03-01 16:57:25 · 118 阅读 · 0 评论 -
LayoutConstraint约束线
(NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(nullable NSDictionary<NSString *,id> *)metrics views:(NSDictionary<NSString *, id> *)views;原创 2021-02-24 20:54:22 · 197 阅读 · 0 评论 -
架构组合模式
组合模式?组合模式(Composite Pattern)又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。主要解决的问题?它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。使用组合模式?树枝和叶子实现统一接原创 2021-02-17 20:09:52 · 131 阅读 · 0 评论 -
异常处理机制
无法断点但是还是可以查看日志原创 2021-02-14 22:03:41 · 94 阅读 · 0 评论 -
架构分析之命令模式
何为命令模式?命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。主要解决的问题在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。使用命令模式?在某些场合,比如要对行为进行"记录、撤销/重做、事务"等处理,这种无法抵御变化的紧原创 2021-02-13 17:44:49 · 138 阅读 · 0 评论 -
备忘录模式
备忘录模式 (状态效果快速恢复)备忘录模式(MementoPattern):保存某种实例对象的某个状态内容至本地存储,以便在适当的时候读取状态内容以恢复状态效果。备忘录模式属于行为型模式。备忘录模式使用:需要记录某个对象的内部状态值,允许用户取消不确定或错误操作,恢复到原先的状态体系。备忘录模式优点:给用户提供了恢复状态的机制,使用户能够方便地快速回到某个状态效果。实现指令信息的底层封装,调用处不需要关心具体保存细节。备忘录模式缺点:备忘录模式本身进行消耗资源。如果类的待存储成员变量过多,势原创 2021-02-08 14:04:32 · 88 阅读 · 0 评论 -
NSParameterAssert参数断言宏
//宏声明//Para条件参数断言宏#define NSParameterAssert(condition) NSAssert((condition), @“Invalid parameter not satisfying: %@”, @#condition)//宏调用NSParameterAssert(condition)condition:条件为真,处于普通执行模式下顺序继续执行/条件为假,切换进入debug模式条件参数断言宏的调用促使数据的有效使用断言评估条件,如条件为false,则调原创 2021-02-07 11:19:57 · 299 阅读 · 0 评论 -
设计之桥接模式
桥接模式(Bridge)(结构型模式)用于把抽象化分支与实现化分支进行解耦,使二者可独立变化(通过提供抽象化分支和实现化分支间的桥接结构实现解耦)。桥接模式使用:在有多种可能会变化的多分支情况下,用子类的继承会造成子类文件爆炸性出现的问题,扩展起来不灵活。实现系统可能有多个角度分类,每一种角度都可能自由变化。把这种多角度分类分支分离出来,让它们各自独立变化,减少它们之间耦合。桥接模式优点:抽象化分支与实现化分支的分离、优秀的扩展能力、实现细节对客户透明。桥接模式缺点:桥接模式的引入会增加系统原创 2021-01-31 20:54:51 · 65 阅读 · 0 评论 -
架构模式之装饰器模式
何为装饰模式通过装饰器模式(DecoratorPattern)允许向现有的实例对象添加新的功能(功能补充),实现功能补充的同时又不改变原来对象文件的层次结构。装饰模式类型的设计模式属于结构型模式(不改变原对象结构的基础上进行新结构的补充装饰),它是作为现有的原对象类的一个包装。这种结构型装饰模式下创建了一个装饰类(装饰子类),用来包装原有类并在保持原有类的方法签名完整性的前提下,提供了额外的补充组合功能。装饰模式使用:想要实现功能效果的补充扩展但不想增加很多Category分类文件的情况下使用装饰器原创 2021-01-27 15:52:44 · 74 阅读 · 0 评论 -
打包安装方式
Xcode直接编译安装运行–>Xcode编译Ipa(Window:DevicesandSimulators)—>Xcode编译Ipa(Itools安装(IOS14.0 ))原创 2021-01-20 14:54:13 · 210 阅读 · 0 评论 -
工厂模式原理
工厂模式属于创建型模式,通过工厂模式可实现对复杂对象的在调用处的快速创建(减少复杂对象的创建工作代码量)。工厂模式中,复杂对象的快速创建调用处不会暴露底层具体的复杂创建逻辑而是通过使用共同的API接口来创建复杂对象。工厂模式使用:明确地计划在不同的枚举条件下创建不同的复杂实例时。工厂模式比较适合于复杂对象的创建。简单对象的创建不推荐使用工厂模式。使用工厂模式需要引入工厂类文件会增加系统的复杂度。工厂模式优点:调用者想在调用处快速创建某个品牌的对象,只要知道品牌名称就可以。扩展性高,如果想批量原创 2021-01-19 22:35:18 · 736 阅读 · 0 评论 -
架构模型之原型模式
原型模式(PrototypePattern):创建重复功能效果的复制对象同时保证性能,属于创建型模式的分支,快速创建相似对象的最佳方式。原型模式体系中通过原型ProtoypeCopyProtocol自定义拷贝协议对外提供协议事件API接口用于快速创建原型对象内存的克隆对象内存。当创建大量重复性对象内存,大量内容重复效果相似的不同内存对象的无限衍生复制需要消耗的代价较大时,则采用原型模式实现快速拷贝。原型模式使用:当某个系统的创建、构成和表示应该独立于产品调用时。当实例化的类值是在运行时刻指定时(动态装原创 2021-01-17 22:13:53 · 301 阅读 · 0 评论 -
NSZone域
NSZone域可视为某种内存池结构,与其相关的实例对象值的内存区的创建(开辟)和释放(不需要时)都在这个对应管控的轻量级内存池里面进行。NSZone域整体呈现出的特征层级为结构体层级风格,采用C结构存储着关于对象内存的管理信息(地址元素等管理信息),实现开辟分配内存及内存不需要使用时的释放回收。CocoaApplication使用系统默认的NSZone域对应用中的对象实例对应的内存进行管理。备注:当NSZone域里面管理着大量对象内存时,这些大量对象内存的批量释放可能会导致内存严重碎片化,虽然Coco原创 2021-01-14 14:58:49 · 247 阅读 · 0 评论 -
结构型模式之外观模式
结构型模式之外观模式(FacadePattern):把具体的操作指令封装于底层(隐藏系统的复杂性),只对外提供公开的API接口。涉及到辅助类对外提供事件API和对现有系统类方法的委托调用。(简化调用指令的复杂性实现解耦)外观模式使用:客户端的指令调用处不需要知道辅助类事件API内部的复杂联系,只需知晓入口事件API即可。外观模式缺点:不符合开闭原则、更改麻烦、逻辑特定类不适合继承重写。外观模式优点:减少各系统文件相互依赖、提高灵活性、提高安全性。外观模式Demo...原创 2021-01-12 16:51:14 · 61 阅读 · 0 评论 -
Xcode11前后自定义窗口
Xcode11前- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //Xcode11前生效 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [U原创 2020-12-29 22:10:32 · 290 阅读 · 0 评论 -
数组/词典写入nil值闪退
数据容器体写入nil元素:应用App闪退内存溢出(现象的本身)/内存泄漏(现象的原因):应用App闪退访问事件函数本身实例为空:应用App闪退原创 2020-12-29 16:32:51 · 105 阅读 · 0 评论 -
Could not find a storyboard named ‘Main‘
info.plist单元文件数据信息载入绑定某个与其相关的视觉效果层渲染view实例值原创 2020-12-27 21:56:27 · 437 阅读 · 0 评论 -
UIImageJPEGRepresentation
UIImageJPEGRepresentation图片转数据(伴随压缩)1、UIImageJPEGRepresentation(<#UIImage * _Nonnull image#>, <#CGFloat compressionQuality#>)参数1:原图片 参数2:压缩品质系数 2、UIImagePNGRepresentation(<#UIImage * _Nonnull image#>)参数:原图片UIImageJPEGRepresentation 压原创 2020-12-23 17:00:06 · 2923 阅读 · 0 评论 -
iOS项目基本框架
iOS搭建项目基本框架项目基本框架:主要是基本的环境支持配置(不考虑具体业务方面问题)。————————————————————————————————项目结构:导航标题栏Navgation+底部状态横切栏Tabbar————————————————————————————————新建工程1.1. 删除不必要的类文件(删除选中三项)1.2. 修改info.plist配置文件删除.storyboard文件对应的特性配置info.plist配置文件中添加特性配置键值对Bundle di原创 2020-12-20 19:40:31 · 573 阅读 · 0 评论 -
架构之策略模式
算法:思维运算法则。算法事件函数.h.m文件簇算法事件的声明实例处于独立的类单元文件.h.m簇策略模式:定义系列的算法(算法封装在特定的策略校验算法类中(可替换))。策略模式体系中算法处于独立类中独立的变化。策略模式使用:系统里面有许多的策略校验算法,这些策略校验算法间的区别仅在于不同的算法行为,则通过策略模式可让待校验对象动态地选择算法行为(避免了多重选择语句块的难以维护)。注意:如果系统中涉及的策略校验算法多于四个(特定的策略校验算法类文件蔟多余4组),需要考虑混合模式以解决策略类膨胀问题。原创 2020-12-20 13:43:31 · 105 阅读 · 0 评论 -
架构之观察者模式
观察者模式:当广播站点对象和观察者对象间存在一对多关系(单个广播站点对象绑定多个观察者对象)时使用观察者模式(行为型模式)(Observer Pattern)。当一个广播站点对象被修改(发送信息)时,则会自动通知所有相关的听众观察者对象。观察者模式使用:一个对象(广播站点对象)的状态发生改变,所有相关的依赖对象(观察者对象)都将得到通知并响应,进行广播通知。观察者模式优点:听众观察者和被观察者广播站点对象是抽象耦合的。建立一套触发通知机制。观察者模式缺点:如某个被观察者广播站点对象有...原创 2020-12-20 13:34:09 · 118 阅读 · 1 评论 -
svn更新提交冲突异常
finder+项目工程侧边栏+pbxproj+回滚上个版本+工作副本管控文件里面=== <<< >>> ||||冲突位置(1)只保留mine其余删除(2)只保留别人的删除mine(3)mine和别人的都保留原创 2020-12-18 11:35:24 · 99 阅读 · 0 评论 -
FPS性能监测
FPS(FramesPerSecond):秒传输镜头帧数(刷新率Hz)。FPS值是衡量用于保存、显示动态视频的信息数量。FPS数据值越大说明秒传输的镜头帧数越多,所显示的画面效果愈流畅,FPS数据值越小说明秒传输的镜头帧数越少,所显示的画面效果愈卡顿。FPS数据值在一定程度上可衡量应用图像的绘制渲染性能。CADisplayLink是一个定时器,主要用于显示的控制。通过CADisplayLink定时器可以让用户程序的信息数据显示频率与屏幕的硬件设备刷新频率保持同步,iOS系统中正常情形下屏幕的刷新率为60H原创 2020-12-17 22:43:25 · 2494 阅读 · 0 评论 -
NSHashTable
使用(NSArray/NSMutableArray/NSDictionary/NSMutableDictionary/NSSet/NSMutableSet)集合容器存储实例对象时会对待存储的实例对象做强引用。使用NSHashTable集合容器存储实例对象做弱引用,NSHashTable集合容器仅仅提供空间坑位但不会持有实例对象,那个实例对象的真正所有人消失则那个对象也会从NSHashTable集合容器中自动消失!(BOOL)containsObject:(id)anObject返回bool值指示h原创 2020-12-16 16:39:00 · 660 阅读 · 0 评论 -
适配器模式原理分析
架构:适配器模式原理分析原创 2020-12-08 21:19:29 · 281 阅读 · 0 评论 -
13种架构设计模式(常用)
13种常用架构设计模式:适配器模式策略模式观察者模式原型/外观模式装饰模式工厂模式(抽象工厂模式)桥接模式代理模式单例模式备忘录模式生成器模式命令模式组合模式原创 2020-12-08 20:30:49 · 930 阅读 · 2 评论 -
PCH文件
PreCompileHeader期望在整个项目中公开的头声明文件引入PCH文件内PCH文件内可引入三方库头文件、定义常量字符串、三方平台appid等全局公开项目中添加prefix.pch文件替换(SRCROOT)/(SRCROOT)/(SRCROOT)/(PROJECT_NAME)/DemoDemo-Prefix.pch编译使用!...原创 2020-12-07 21:38:13 · 260 阅读 · 0 评论 -
API Internal Error
API内部错误苹果设备通过手机助手安装App时遇到“APIInternalError”提示?原因:APIInternalError属于设备本身的系统环境出现问题方案:重启设备再安装原创 2020-12-07 10:48:50 · 946 阅读 · 0 评论 -
pbxproj文件内部发生冲突
痕迹配置文件冲突项目打不开原创 2020-12-06 22:13:02 · 109 阅读 · 0 评论