- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 【Xcode】error: unable to open configuration settings file
解决办法:删除缓存,前往->资源库->developer->Xcode->DerivedData(删除即可)有段时间没有运行程序【xcode期间未升级】PS:注意删除过程中需要将xcode退出。Xcode 编译报错。
2024-08-22 14:54:55
148
原创 load && initialize 浅析
load调用顺序:父类->子类->分类 (不会覆盖);多个分类情况下,compile sources <谁在前,先执行谁。多个分类都会被执行>;子类覆盖load方法,父类覆盖了仍然会被调用;仅调用一次(采用的是函数指针),如果【AA load】则执行发送消息哪一套机制;main前,所以尽管有锁,但仍然不安全。不建议在此初始化SDK的操作;通常情况仅在此做方法交换的动作,一旦覆盖了load,则该类一定会被提前加载。而非懒加载;initialize调用顺序:父类-&
2023-10-15 23:39:39
191
原创 iOS使用Rust调研
编辑已恢复我们已与您断开连接。尝试重连时会保存您所做的变更。尝试重连标题 1已保存Bin SongB要发布此内容,请选择键盘上的 ⌘Enter。发布关闭Rust技术空间跨平台使用调研iOS使用Rust调研添加表情符号添加标题图像添加状态一、iOS 项目接入 Rust Library约定:iOS 项目目录 DemoApp将 Rust Library 代码 Clone 到 iOS 项目根目录下: DemoApp/demo-library-ffi;
2023-07-31 23:47:17
1515
原创 Rust调试【三】
vscode CodeLLDB extensionRust and ValgrindForeign Function InterfacePanic handling
2023-07-31 23:32:42
983
原创 Rust 开发环境搭建【一】
Rust 相关的配置整体偏向使用 https://toml.io/en/ (toml)格式的文件。安装 Rust 需要的 Visual Studio Code 插件。下载安装 Visual Studio Code。“墙裂” 不推荐使用 nightly 版本。配置 ~/.cargo/config。安装 rust 语言 以及 工具链。推荐 Rust 语言版本:1.65。选择自己所用的平台的版本下载安装。推荐安装方法:rustup。
2023-07-31 23:17:17
998
原创 升级Xcode14.3,项目无法运行解决
报错:link command failed with exit code 1(use -v to see invocaiton)原因:新版本Xcode删除了特定目录下的一些文件。
2023-06-30 19:08:23
1075
原创 Fix Xcode14 bundle need sign
升级iOS16后进行真机调试,第三方包要求签名。可能是苹果的bug(或许是为了增强安全性)PS:猜测后期pod方面会修复,或者苹果修复。
2022-09-21 11:05:57
329
原创 Swift中String含有emoji表情,长度计算不准确;
Swift:Sting没有length方法,获取字符串长度使用count;OC:NSString使用.length获取长度;场景:在存在emoji的的字符串下,Swift和OC混编时候如果用count取,导致匹配长度不够;NSString是由UTF-16单元构成length方法返回的是基于UTF-16的长度Swift的count返回的只是Unicode字符个数结论: Swift的utf16.count是对应NSString的.length方法 private func allR
2022-03-30 20:11:57
3228
原创 Swift中#Selector掉用小技巧
场景:不同场景掉用相同方法的场景,方法内部需要区分打点事件;代码示例: let tapGesture = UITapGestureRecognizer(target: self, action: #selector(goPeanutPage)) // 方式2: headerView.peanutEnterBtn.addTarget(self, action: #selector(goPeanutPage), for: .touchUpInside) @objc func goP
2022-03-22 16:47:49
2593
原创 解决 git 命令删除远程分支后,本地 git branch -a 仍能看到已删除的分支问题
使用 git push origin --delete name 删除远程分之后执行 git branch -a 查看远程和本地所有分之,发现还会显示已删除分支执行 git remote show origin 查看远程库,可看到远程分支,本地分支相对应的关系执行 git remote prune origin 删除远程没有本地有的分支...
2022-01-21 20:40:47
2467
原创 入职必备技能【一】
Homebrew官网:https://brew.sh/index_zh-cn.htmlHomebrew安装:安装步骤:打开终端复制、粘贴以下命令,回车等待【中间需要输入开机密码】ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”注意:可能会失败,原因大概率是vpn问题。安装完homebrew 开始安装命令行神器:oh my zshsh -c “$(curl -fsSL
2021-09-13 18:20:30
97
原创 iOS真机调试【Unable to install “project name“】
场景:更新完证书、描述文件。出现工程运行成功,立即终止。原因:该设备之前通过旧证书run过,更改后本次编译就和上次你编译的时候用的证书不一样了。解决方式:从设备卸载该app,然后重新编译即可。...
2021-07-07 15:03:27
1333
原创 @dynamic VS @synthesize
随着编译器的升级,我们已经不再使用@synthesize关键字了,一些比较老的三方库仍在使用。所以我们需要了解其中的原理:**@dynamic VS @synthesize**同为编译器@property关键字,是对应的关系。@synthesize和@dynamic都不写,那么编译器默认是@syntheszie var = _var;@synthesize的语义:如果没有手动实现setter和getter方法,编译器会自动添加这两个方法。【强调合成】@dynamic的语义:告知编译器,属性的se
2021-05-18 21:10:33
121
原创 浅析拷贝
前提:我们知道拷贝有深浅之分,明白区分深浅拷贝的两项关键指标。1、是否开辟了新的内存空间。【深拷贝开辟了空间】2、是否导致了引用计数的变化。【浅拷贝影响了引用计数】不可变对象 copy 不可变 ~~浅拷贝~~ 不可变对象 mutable copy ~~可变~~ 深拷贝可变对象 copy ~~不可变~~ 深拷贝可变对象
2021-04-10 12:22:50
83
原创 小技巧《四》
好代码/** 随机取像框模型【小于1什么都不做】*/- (ULProfileUserAvatarFrameModel *)avatarFrameModel { ULProfileUserAvatarFrameModel *tempModel; if (![self.avatarFrameModelList isValidArray]) { tempModel = nil; } if (self.avatarFrameModelList.count == 1
2021-03-10 14:21:28
74
原创 组件化层粒度拆分规则【三】
组件化背景目前共有8(北京)+3(深圳)+主端=12个组件,组件同步虽已经流程化,但目前还存在代码修改权限问题,比如在直播间需求中修改common组件,目前这种代码管理方式无法有效的控制代码范围。因此我们需要将项目组件化来有效的控制代码修改和提交权限。鉴于组件化过程中我们对于解耦或者独立组件的要求,这里提前讲下同时希望后续业务和组件开发人员在封装视图和功能类时可以遵循组件化要求,加速组件化进度。项目结构根据目前的结构,我们将项目划分为四层,从下往上分别为:基础层、功能层、聚合功能层、业务层。注意:
2021-03-03 15:32:54
541
2
原创 小技巧《三》
场景:需求是点击个人中心页面头像导航push进入查看头像页面。点击该页面编辑个人资料按钮导航push进入编辑页面。编辑完毕点击左上角返回按钮导航pop到个人中心页面。使用系统左滑手势返回。1、点击左上角返回按钮。 [self.navigationController popToViewController:xx animated:YES];2、使用系统左滑手势返回。- (void)resetNavigationControllers { NSMutableArray *pageMutabl
2021-03-03 10:51:16
79
原创 小技巧《二》
场景:项目中总会有需要判断字符串是否合法的需求1、常规情况下一大部分公司都是这么写的。【假设这是分类】- (BOOL)isString { return [self isKindOfClass:[NSString class]];}- (BOOL)isValidString { return [self isString] && ((NSString *)self).length > 0;}2、看起来人畜无害,其实暗藏着不合理的地方?3、如果调用方,明
2021-02-23 10:53:49
121
原创 Git 分支重新命名后冲突解决【 git pull origin master --allow-unrelated-histories 】
问题:➜ Example git:(master) ✗ git pullfatal: refusing to merge unrelated histories场景:做私有库时候,由于命名规范问题本地原先创建了一个仓库后进行了(README),把本地仓库和Github上关联以后,发现git pull,git feach提醒 fatal: refusing to merge unrelated histories原因:通过网上查找,原因大概两个分支是两个不同的版本,具有不同的提交历史。解决:
2021-02-20 18:22:35
13200
3
原创 制作Pod【二】
Last login: Tue Feb 9 18:42:35 on console创建模版工程示例?➜ ~ pod lib create ULBaseString_CCloning https://github.com/CocoaPods/pod-template.git into ULBaseString_C.Configuring ULBaseString_C template.security: SecKeychainSearchCopyNext: The specified item co
2021-02-19 17:09:58
320
原创 六月围城·序
日息的人人、黑夜的雪花。为何融化,为何奔波!能否停下、停下。回忆的身影、伴随着落霞。孤独的雨下、慌乱的手指。随机触发,呼吸的人生。都渐渐迷失了么?失去的六月、听说的青春。慢慢的老去、皆是一种围城。为谁而留下、为谁而哭泣。曾经的年华、温暖过后。醒着的人剩下孤独的六月。我想这便是当时创作六月围城的初衷,既是一种青春的祭奠。也在青春时回忆青春。如果青春岁月记录青春,每次读起便能重返年轻。正如六月那般炙热未热!每个人都有故事,每个故事都是一场经历,每个经历就像是一场梦!梦醒了,我们可能已经
2020-12-03 10:36:04
160
原创 小技巧《一》
场景:加载更多的表视图,滑动时根据偏移量动态加载更多数据《分页》同时存在数据源修改的操作《删除,修改》日志:#1453570 NSInternalInconsistencyExceptionInvalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (9) must be equal to the number of r
2020-11-03 14:34:03
134
原创 Linux基础指令(二)
Linux基础指令工欲善其事,必先利其器ffmepegls(显示当前目录下的文件)ls-alta:全部的文件l:列表t:倒序.当前目录…上一级目录-drwxr-xr-x文件所有者文件所数组其他用户-:普通文件,d:目录文件,l:链接文件,b:设备文件,c:字符设备文件,p:管道文件cd进入某个指定的目录下cd -仅在当前两个目录下相互切换mkdir创建文件夹/目录权限相关也可以查看到例如775mkdir -p a/b/c指定参数.
2020-10-24 14:07:18
439
原创 音视频场景(一)
音视频场景1、5G的推出2、物联网概念的形成互动直播系统在线教育在线健身娱乐直播系统抖音快手音视频特效美颜特效音视频编辑影视素材的剪辑音视频的合并监控系统超市停车场常用工具ffmpeg(各种音频特效的处理、编解码)ffplay(PC端)IJKPlayer(移动端)VLC(图形界面化)简单模型流媒体服务器问题推流失败ffmepeg 按照音视频最快的那条流进行播放加了re,ffmpeg 会按照flv 中的时间戳推流,不加则是以最快速度推流时间戳是.
2020-10-24 00:41:30
751
8
原创 一面【扫盲篇】
一面【扫盲篇】-(CGSize)intrinsicContentSize的作用?1、Autolayout中作为UIview的只读属性2、直译固有大小,如果没有指定控件的大小,需要重写相当于占位。场景1: 系统导航内自定义view,需要重写改属性。否则大小会被导航栏改变。场景2: UIImageView相关不指定图片,不设置本身大小,则回抛约束警告。编写一个循环引用的代码?循环引用(交叉引用属于其中一种):双方互相强引用对方场景1: 设计代理时候,delegate的声明需要使用weak或者a.
2020-10-10 23:12:24
163
原创 Flutter插件发布
Flutter插件发布新建插件包Application原生Flutter工程pluginiOS和Android差异化packagedart通用module混合工程科学上网检查插件和发布插件需要在当前项目路径下检查插件flutter packages pub publish --dry-run发布插件flutter packages pub publish必须翻墙准备一个谷歌账号发布爬坑第一次发布(要求验证)Looks great!
2020-10-10 01:00:21
758
原创 SDWeb(图片缓存架构设计)
SDWeb(图片缓存架构设计)优化减少任务量缓存后则无需转移任务量更多的去子线程操作自己的任务做了什么底层的系统做了什么怎么取消一个未加载完成的图片同时加载一个图片的时候,怎么去重加载流程第一次加载网络操作(下载)保存本地加载图片第二次加载取本地bitmap一种位图的格式,线程里边进行操作类构成Manager(管理者)多级缓存策略内存磁盘网络下载耗时流量损耗查找流程查找开始内存是
2020-10-09 19:57:51
503
1
原创 七大设计原则
七大设计原则单一指责原则一个类只负责一个事【类设计】UIView响应、传递UILayer显示内容、动画接口隔离原则协议定义按功能进行分离【类簇】Tableview 数据源Tableview 代理源依赖倒置原则体现在【继承】实现依赖抽象抽象不应依赖实现举例:外部增删改,不关注内部的具体实现Plist数据库文件组合/聚合复用原则体现在【设计】尽量使用组合/聚合的形式少用继承来达到复用迪米特法则体现在【模块】类和类之保持距离,尽可能少的了解其他对象高
2020-10-09 19:27:19
254
原创 怎么理解写入内存和写入磁盘?
怎么理解写入内存和写入磁盘?1、只要是存储类型的数据都是写在内存上《也就是断电后没有保存下来的都在内存上》。2、得出所有的程序代码都在内存上运行,写入磁盘的话需要有指定的文件路径。3、字典等数据容器底层一般都是由哈希表实现,原因是效率比较高。只需要优化哈希函数即可。4、网络框架存储图片时候建议对资源URL采取MD5,可适当防止盗链。...
2020-10-09 19:22:54
1587
原创 组件化&模块化
怎么区分组件化和模块化?1、组件多是半成品(甚至可以是代码片段)强调的是重用。一般作为框架的最底层。独立性强以供模块使用。2、模块多是指定业务代码进行的封装。可独立运行,以界面或者功能粒度进行划分。一般作为框架的业务层。通过接口等手段通信。目的是降低业务耦合。3、举例:一个登录的UI界面呈现出来的可以是一个登录模块,而登录模块有按钮、输入框等组件构成(也可以是一个)。4、它俩一般是一起呈现,一个叫做组件\模块。多个就成了组件\模块化...
2020-10-09 19:21:04
178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人