- 博客(108)
- 收藏
- 关注
原创 iOS 开发者账号添加新的测试设备的正确姿势
开发中遇到添加新的设备,重新打包后, 仍然无法安装测试包。解决:删除本地的描述文件, 重新下载,重新打包cd ~/Library/MobileDevice/Provisioning\ Profilesrm *.mobileprovision...
2019-10-09 10:06:48
2014
原创 iOS 构建配置与 AdHoc 打包说明
iOS项目构建配置与AdHoc打包管理说明。文章介绍了iOS项目中常见的四种构建配置:Debug用于开发调试、AdHoc用于内测分发、AdHoc_Release用于预发布、Release用于正式上架。重点说明了如何在Xcode中通过不同配置使用带"开发"角标的App Icon来区分内测与正式包,包括创建两个AppIcon集合、配置Build Settings以及通过xcodebuild命令行指定构建配置。该方案帮助测试人员快速识别不同版本,确保内测与正式环境隔离。
2025-07-17 19:48:49
837
原创 pyinstaller --version-file ver.txt
pyinstaller.exe --version-file=file_version_info.txt -F main.py
2023-02-10 16:17:07
637
原创 Kotlin Example
Package definition and importspackage my.demoimport kotlin.text.*//...Print to the standard outputprintln("Hello world!")println(42Functionsfun sum(a: Int, b: Int): Int { return a + b}fun sum(a: Int, b: Int) = a + bfun printSum(a: Int,
2022-02-08 17:49:43
1782
原创 OC 预编译指令
宏定义 条件编译 文件包含宏定义:定义格式: #define 标识符 字符串1、 不含参数: #define TAG_VIEW 100862、 含有参数:#define MAX_INT(a,b) a+b3、 宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。4、 #define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本文件结束。通常,#define 命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。5、 可以用#undef 命令终止宏定义
2021-09-27 14:45:13
601
原创 观察者模式原理
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决:使用面向对象技术,可以将这种依赖关
2021-09-23 15:51:48
640
原创 Swift 高阶函数
map可以对数组中的每个元素做一次处理,就是遍历的作用,map接受一个闭包作为参数,然后遍历数组,对数组的每一个元素来一次闭包的操作。相当于数组中所有元素做一次映射。map可以对一个集合类型的所有元素做映射, 不会修改实例值,而是做一个拷贝。flatMap:flatMap 依然会遍历数组的元素,并对这些元素执行闭包中定义的操作与Map不同的是,它对最终的结果进行了所谓的“降维”操作。 本来原始数组是一个二维的, 但经过 flatMap 之后,它变成一维的了flatMap返回后的数组中不存在nil
2021-09-17 21:29:26
244
原创 Swift 初始化器
required,如果希望子类必须要实现某个方法,使用该字段可失败初始器: init?使用 init!定义隐式解包可失败初始化器类、结构体、枚举都可以定义初始化器类:指定初始化器(designated initializer), 便捷初始化器(convenience initializer)初始化器调用规则:指定初始化器必须从它的直系父类调用指定初始化器便捷初始化器必须从相同的类中调用另一个初始化器便捷初始化器最终必须调用一个指定初始化器两段式初始化1.初始化所有存储属性
2021-09-17 15:53:00
215
原创 point
AnyClass, Any, AnyClassAny:可以代表任意类型(枚举、结构体、类,也包括函数类型)AnyObject:可以代表任意类类型。class Student { func test(){ }}struct size { var width:Float var height:Float}var a:Any = 1.2a = 10a = "eeee"a = [10,20]a = UIView()a = Student()a = Stu
2021-09-17 14:26:33
128
原创 算法课学习笔记
算法时间复杂度大O标识法, O(N)aN^2 + bN + 1评价算法1.先看指标2.指标一样 看常数项二分搜索:1 2 4 5 7 8 9O(M*logN)外排1 2 4 6 76 3 9
2021-09-14 15:30:39
243
原创 算法(二)
堆排序满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。 也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。就是说最后一层叶结点都没有子节点了,且最后一层的叶结点都存在。完全二叉树: 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。堆是完全二叉树大根堆: 完全二叉树,任何一个子树的最大值就是
2021-09-14 15:30:16
97
原创 汇编常用指令
mov dest, src 将src的内容赋值给 dest, 类似于 dest = src[地址值] 中括号里面放的都是内存地址word是 2字节, dword是 4字节, qword 是8字节call 函数地址 调用函数lea dest, [地址值] 将地址值给dest,ret 函数返回xor op1, op2将op1和op2 异或的结果赋值给op1, 类似于op1 = op^op2...
2021-08-27 14:58:41
176
原创 C++基础知识
C++基础引用 Referenceconst引用 Reference在 c语言中, 使用指针 可以间接获取,修改某个变量的值在C++中, 使用引用(Reference)可以起到跟指针类似的功能int age = 20;int *p = &age;cout << age << endl; //直接使用cout << *p << end1; //间接获取 age值*p ,获取指针变量p的值即 age的地址, 然后访问这个地址
2021-08-27 13:49:06
136
原创 block相关
关于block我想到的问题1.如何声明 As a local variable: returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; As a property: @property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes); As a method parameter: - (void)som
2021-08-03 15:38:07
119
原创 runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)
介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance of a class.struct objc_object { Class _Nonnull isa OBJC_ISA_AVAILABILITY;};stru.
2021-07-30 08:50:17
643
原创 category 复习
一、Category 的使用场合主要作用是为已经存在的类添加方法。一个类中的代码非常多,如果超过1000多行,那么在翻阅的时候也会觉得很困难,但是继承下来,再使用的时候,只能集成子类,而且方法比较多,想要直接分散开来,不是特别容易,所以可以采取分类的方式,把想通类型的代码加载在一起。好处:可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处, a)可以减少单个文件的体积 b)可以把不同的功能组织到不同的category里 c)可以由多个开发者共同完成一个类 d)可以
2021-07-28 15:43:26
170
原创 关联对象的原理
关联对象API添加关联对象void objc_setAssociatedObject(id object, const void * key, id value, objc_AssociationPolicy policy)获得关联对象id objc_getAssociatedObject(id object, const void * key)移除所有的关联对象void objc_removeAssociatedObjects
2021-07-23 15:22:12
195
原创 KVO, kVC复习
kvo 健值监听使用1.添加监听2.移除监听kvo的本质,添加监听后,创建了了个 NSKVONotifying_xx 对象, 继承自xx, xx实例对象的isa指针指向 NSKVONotifying_xx.这个对象的实现大致如下:- (void)setNum:(Int)num { _NSSetIntValueAndNotify();}void _NSSetIntValueAndNotify(){ [self willChangeValueForkey:@"num"];
2021-07-19 17:06:35
176
原创 OSSpinLock不在安全
OSSpinLock,自旋锁。不再安全原因:低优先级的线程先获取到锁,而后高优先级线程也来获取这个锁,高优先级意味着其可以在CPU调度中有更大几率分配到时间片,但拿到时间片后获取不到自选锁,时间都浪费到了循环等待上。而这时低优先级的现场可以正常执行任务,但其分配到时间片的几率又很小,从而加剧CPU资源的浪费,也有可能出现自旋锁无法释放的问题;这种低优先级会比高优先级先执行,或者说更快执行的现象,个人认为这种情况就是优先级反转。参考...
2021-07-09 15:34:09
196
原创 centerSlice was used with a BoxFit that does not guarantee that the image is fully visible.
centerSlice/// The center slice for a nine-patch image. /// /// The regionof the image inside the center slice will be stretched both ///horizontally and vertically to fit the image into its destination. The/// region of the image above and belo
2021-06-26 10:36:55
1267
原创 objc-msgSend(三) 消息转发
消息转发阶段相关方法- (id)forwardingTargetForSelector:(SEL)aSelector{}//方法签名: 返回值类型, 参数类型- NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector{}- (void)forwardInvocation:(NSInvocation *)anInvocation {}NSInvocation 是封装了一个方法调用,包括: 方法调用者,方法名, 参数流程一
2021-06-23 16:11:46
109
原创 iOS 修改App 显示名称 需要注意的事项
如果App中 使用 NSKeyedArchiver 保存数据的话, 修改App名称时候要注意,可能出现crash。如果修改了project,会crash, 正确的做法是,在infoPlist.string 文件中 设置 CFDisplayName
2021-06-10 16:17:56
268
原创 散列表原理
一、什么是散列表散列表,又叫哈希表(Hash Table),是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也就是说,把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。通常,我们把这个关键字称为 Key,把对应的记录称为 Value,所以也可以说是通过 Key 访问一个映射表来得到 Value 的地址。而这个映射表,也叫作散列函数或者哈希函数,存放记录的数组叫作散列表。目前,这个哈希函数比较常用的实现方法比较多,通常需要考虑几个因素:关键字的长度、哈希表的大小、关键字的分布情
2021-05-28 14:33:13
975
原创 2021-05-18
Flutter常用基础widget组件1.Text2.Row,Column flexbox布局3.stack 绝对定位4. Container Container 可让您创建矩形视觉元素。container 可以装饰为一个BoxDecoration, 如 background、一个边框、或者一个阴影。 Container 也可以具有边距(margins)、填充(padding)和应用于其大小的约束(constraints)。另外, Container可以使用矩阵在三维空间中对其进行变换。使用M
2021-05-18 13:18:07
93
原创 制作pod代码库(注意事项)
创建仓库创建podspec文件1.初始化库时候,记得选择 add a license, 选择 MIT 吧2.将项目clone 本地git clone https://github.com/fishycx/BBNestTableView.git3.创建podspec文件,命名为 BBNestTableView$ pod spec create BBNestTableView4.导入代码到Classes文件夹下5. 编辑 .podspec文件Pod::Spec.new do |spec|
2020-08-26 17:08:03
202
原创 xcode 报错问题记录
更新pod库之后报错 Redefinition of module , 看网上的解决方案都不合适,仔细看报错原因, 把重复内容删掉。即可
2020-04-01 14:08:26
375
原创 移除vscode装饰器报错
使用vscode 创建一个 react+reducer项目时候,遇到以下警告Experimental support for decorators is a feature that is subject tochange in a future release. Set the ‘experimentalDecorators’ option toremove this warning....
2019-12-20 11:13:40
465
原创 Kingfisher加载不出带逗号的图片url
问题说明有的网络图片链接中有逗号, 使用kingfisher 加载不出来。http://img3.imgtn.bdimg.com/it/u=3731532511,3143059206&fm=26&gp=0.jpg参考相关问题1参考相关问题2解决方案:let modifier = AnyModifier { request in var r = request...
2019-12-17 22:11:05
1170
原创 Taro(一)
开发期间常用命令npm run dev:h5 WEBnpm run dev: weapp 微信小程序npm run dev: alipay 支付宝小程序npm run dev:swan 百度小程序npm run dev: rn React
2019-12-12 11:53:49
310
原创 初识Taro
简介Taro 是一套遵循 React 语法规范的多端开发解决方案使用 Taro 只书写一套代码,再通过Taro 的编译工具,讲源码分别编译出可以在不同端运行的代码。 微信小程序,H5 RN安装cnpm intall -g @tarojs/cli初始化taro init MyProject启动项目npm run dev: h5...
2019-12-11 16:45:03
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1