- 博客(910)
- 资源 (17)
- 收藏
- 关注
原创 【flutter】泛型类型判断
void main() { test<int>();}static testT<T>() { //判断T是否为某一类型或其子类 print(List<T>() is List<num>); //得到T的类型 print(typeOf<T>());}static Type typeOf<T>() => T;注意这个在dartpad中是无法运行的...
2020-09-01 14:42:04 2052
原创 【flutter】异常捕获和上报代码大致
void collectLog(String line){ ... //收集日志}void reportErrorAndLog(FlutterErrorDetails details){ ... //上报错误和日志逻辑}FlutterErrorDetails makeDetails(Object obj, StackTrace stack){ ...// 构建错误信息}void main() { FlutterError.onError = (FlutterErr
2020-08-26 18:16:41 298
原创 【atomic】再谈从atomic关键字说到多线程安全(内含iOS给代码加锁方法总结)
再谈从atomic关键字说到多线程安全(内含iOS给代码加锁方法总结)atomic是什么原子性:在默认情况下,由编译器所合成的方法会通过锁定机制确保其原子性(atomicity)。如果声明属性时不显式地声明nonatomic关键字,那这个属性就是“原子的”(atomic)。如果属性具备nonatomic特质,则不使用同步锁。atomic 和 nonatomic这对属性关键字是和线程安全挂钩的,虽然 atomic 属性关键字会给该 property 的 getter和setter方法加锁,但它也不能保
2020-08-26 14:39:02 1061
原创 【flutter】flutter sdk获取方法
下载以下安装包来获取最新的 stable Flutter SDK:flutter_macos_1.20.2-stable.zip想要获取到其他版本的安装包,请参阅 SDK 版本列表 页面。将文件解压到目标路径, 比如:$ cd ~/development$ unzip ~/Downloads/flutter_macos_1.20.2-stable.zip如果你不想安装固定版本的安装包,你可以跳过步骤 1 和 2。或者是从 GitHub 上的 Flutter repo 获取源代码,并根据需要更改
2020-08-25 16:17:53 586
原创 【flutter】 flutter 环境及工具
https://flutter.dev/community/chinaexport PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cngit clone -b dev https://github.com/flutter/flutter.gitexport PATH="$PWD/flutter/bin:$PATH"cd ./flutterf.
2020-08-25 16:07:08 117
原创 【Flutter】flutter .gitignore参考
给Flutter项目添加.gitignore文件以及如何修改.gitignore文件并生效flutter项目的开发,一般来说都是与原生开发混合进行的,单纯的flutter开发局限性很大,需要与原生进行配合。flutter项目集成的两种方式这就涉及到如何将flutter与现有的项目进行融合。这里以客户端的Android/Ios开发为例,使用flutter开发项目大体有两种集成方式,第一种就是新建flutter项目,android端就在flutter/android目录下开发,ios端就在flutter/
2020-08-18 17:20:38 546
原创 【Flutter】flutter .gitignore小记
flutter官方样例:https://github.com/flutter/flutter/blob/master/.gitignore某库的实践样例# Miscellaneous*.class*.log*.pyc*.swp.DS_Store.atom/.buildlog/.history.svn/# IntelliJ related*.iml*.ipr*.iws.idea/# Visual Studio Code related.vscode/# Fl.
2020-08-18 17:13:59 164
原创 【时间】iOS时间处理小记
iOS关于时间的处理做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单。我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制。时间的形式在开始深入讨论之前,我们需要确信一个前提:时间是线性的。即任意一个时刻,这个地球上只有一个绝对时间值存在,只不过因为时区或者文化的差异,处于同一时空的我们对同一时间的表述或者理解不同。这个看似简单明了的道理,是我们理解各种与时间相关的复杂概念的基石。就像UTF-8和UTF-16其实都是U
2020-08-16 17:01:19 372
原创 【手势隔层透传】iOS viewA被viewB遮挡,如何让viewA依然响应添加的pan平移手势
目录实践参考系统响应阶段APP响应触摸事件触摸 事件 响应者触摸触摸事件响应者寻找最佳响应者(Hit-Testing)视图如何判断自己能否响应触摸事件?寻找最佳响应者的原理hitTest:withEvent:自定义hitTest:withEvent:触摸事件的响应响应链中的事件传递规则UIResponder、UIGestureRecognizer、UIControl的优先级UIGestureRecognizerUIControl实践场景描述:viewA上的80%被viewB遮挡viewA上添加了pa
2020-08-05 14:53:43 5520
原创 iOS LRU学习参考
1.简介LRU (英文:Least Recently Used), 意为最近最少使用,这个算法的精髓在于如果一块数据最近被访问,那么它将来被访问的几率也很高,根据数据的历史访问来淘汰长时间未使用的数据。这篇文章主要分享一下关于内存缓存在iOS 中运用,主要分析一下第三方框架中LRU的运用,包括 Lottie 和 YYCache.2.算法实现缓存淘汰算法1.新添加的数据放在头部2.被访问到的数据放在头部3.超过最大缓存量的数据将被移除。3.运用1.LottieLottieLO
2020-08-03 11:14:29 861
原创 【二进制数据】【共用体】NSData类型与double类型互转
从NSData转double// .h中FOUNDATION_EXPORT double floatFromData(NSData *data);// .m中double floatFromData(NSData *data) { char* pData = data.bytes; char pData2[8] = {0}; for (int i = 0; i < 8; i++) { pData2[i] = pData[7 - i]; .
2020-07-17 10:33:37 803
原创 【阴沟翻船】AVPlayer设置完毕马上调用play方法会导致播放没声音
注意:必须要KVO监听playItem的status,监听AVPlayerStatusReadyToPlay时再调用play方法,不论是远程的还是本地 NSURL *url = [[NSBundle mainBundle] URLForResource:@"rqhhs.mp3" withExtension:nil]; self.playItem = [AVPlayerItem playerItemWithURL:url];// 2.创建AVPlayerItem s.
2020-07-14 18:46:02 2783
原创 内存泄漏分析集锦
iOS自从引入ARC机制后,一般的内存管理就可以不用我们码农来负责了,但是一些操作如果不注意,还是会引起内存泄漏。本文主要介绍一下内存泄漏的原理、常规的检测方法以及出现的常用场景和修改方法。1、内存泄漏原理内存泄漏的在百度上的解释就是“程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果”。在我的理解里就是,公司给一个入职的员工分配了一个工位,但是这个员工离职后,这个工位却不能分配给下一位入职的员工使用,造成了大量的资源浪.
2020-07-04 12:24:48 823
原创 drawrect导致内存暴涨分析
问题的抛出在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的程序内存暴增。下面我们来看一个例子。去年的某天午后,北京的雾霾依旧像现在这样醇厚,我的同事辉哥像往常一样与我楼下约烟。我见辉哥表情凝重,便询问究竟。辉哥做了一个画板功能,但是苦于内存问题一直得不到解决。画板功能很简单,就是记录手指触摸的轨迹然后绘制在屏幕上。下面我们来看一张效果图:如图我们看到左侧内存的状况随着手指的绘制逐渐恶化。另外细心的同学可以观察到,点击图中蓝色矩形按钮之后,便会弹出画板,而这时并没有进行任何的手指绘制,
2020-07-04 12:00:55 735
原创 各个内存分析工具比较
github地址:https://github.com/Tencent/OOMDetectorhttps://github.com/facebookarchive/FBAllocationTracker
2020-07-04 11:02:35 1057
原创 WKWebView的userAgent在iOS13上和Mac上safari的userAgent一样的问题
iOS13PadOS上,WKWebView的UserAgent变成了类似这样:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko)其主要原因是iPadOS在设置-Safari浏览器-请求桌面网站的设置默认是开启的,只要把它关掉就正常了,但是不能要求所有用你的软件的人都去做这个设置。WKWebView中新增的api中有个新的api叫做WKWebpagePreferences:
2020-07-04 10:51:02 2012
原创 iOS诡异问题之一(键盘弹起来不显示按键,且键盘只有200高)
问题描述:键盘弹起来不显示按键,且键盘只有200高问题原因:采用对window.rootViewController直接更换值的方式切换页面,且其中一个controller在viewWillAppear方法中调用了页面内的textField或者textView的becomeFirstResponder方法要调起键盘必现方式:在window.rootViewController更换值之前先赋值nil解决方案(暂时):把在在viewWillAppear方法中调用的textField或者textVie
2020-06-18 23:30:44 518
原创 AsyncDisplayKit/texture
旧https://github.com/facebookarchive/AsyncDisplayKit新https://github.com/texturegroup/texture
2020-05-24 17:50:34 255
原创 iOS 多线程之任务和队列
iOS 多线程之任务和队列前言学习多线程,肯定要了解GCD,GCD两个最核心的概念就是:任务和队列。所以学习好多线程,首先要把任务和队列吃透,才能能好的使用多线程。为什么使用GCD?因为使用 GCD 有很多好处啊,具体如下:GCD 可用于多核的并行运算;GCD 会自动利用更多的 CPU 内核(比如双核、四核);GCD 会自动管理线程的生命周期(创建线程、调度任务、销毁线程);程序...
2020-04-23 22:44:50 734
原创 Android Studio(as)如何点击project区的文件切换代码区(单击文件打开源码)
单击文件打开源码默认双击项目窗口的文件,就能够在编辑器中自动打开项目窗口 -- 工具栏 -- 设置按钮 -- Autoscroll to Source勾选,单击就可在编辑器中自动打开。从源码定位到文件编辑器中打开的文件,默认光标在其中,是不会自动定位到文件所在位置的。项目窗口 -- 工具栏 -- 设置按钮 -- Autoscroll from Source勾选,光标单击编辑器中...
2020-04-04 11:22:34 1386
原创 代码对比工具 mac
代码比对神器 KaleidoscopeKaleidoscope 是一个非常强大的比对工具,可以十分方便地比对文本、图片、文件夹等内容。搭配上 SourceTree,能够大大提升 Git 的效率。Kaleidoscope 可以用来:比对任意文字、图片、文件夹Code Review 利器,可以比对 Git 中不同 commit、不同分支上的代码快速解决 Git 合并冲突…Source...
2020-03-19 20:40:38 3051 1
原创 【git tag】相关操作
打tag :git tag -a [tag名] -m "此次tag备注"推送所有tag :git push --tags删除tag :git tag -d [tag名]删除远程taggit push origin :refs/tags/[tag名]查看远程taggit ls-remote...
2020-03-02 17:58:57 126
原创 Jenkins 如何hook git push --tags
这是gitlab钩子参考:https://testerhome.com/topics/17383
2020-03-02 17:43:10 402
原创 私有pod库创建过程
1、创建pod的git仓库2、把仓库的clone地址复制一下3、pod repo可以看到本地所有的repo,包括path也就是文件路径也可以看到4、pod repo add PrivatePods clone地址注意:官方创建私有pod文档:https://guides.cocoapods.org/making/private-cocoapods.html这个命令执行完毕后...
2020-02-28 14:21:52 628
原创 NSURLProtocol
为了使用NSURLProtocol子类,需要向URL加载系统进行注册。当请求被加载时,系统会向每一个注册过的protocol询问:“Hey你能控制这个请求吗?”第一个通过+canInitWithRequest:回答为YES的protocol就会控制该请求。URL protocol会被以注册顺序的反序访问,所以当在-application:didFinishLoadingWit...
2020-02-20 17:55:19 278
原创 git rebase用法 以及 --git merge 与 git rebase区别
https://www.cnblogs.com/FraserYu/p/11192840.html
2020-02-14 09:58:16 211
原创 iOS 坐标原点调研(屏幕左上角 OR 导航栏右下角)
iOS 屏幕原点坐标自定制导航栏的研究一、屏幕原点坐标的研究小伙伴们可能发现,我们给一个空间设置origin为(0,0)的时候,有时候这个点会再屏幕的最左上角(有导航栏的情况下还可能会被导航栏给盖住),有时候又在导航栏的下边,都是同样的原点坐标,那么为什么会出现这种情况呢?下面给出答案:一个controller的view的原点位置受self.navigationController. na...
2020-02-13 16:01:55 1027
原创 git commit -m 如何支持换行(或者说git comment如何支持换行)
git commit -m ' // 在这里直接输入回车即可> 1、第一项改动 // 以下的这些真正的comment可以在其他文本编辑器中写好粘贴过来> 2、> i、第二项第一个小改动> ii、第二项第二个小改动> iii、第二项第三个小改动> 3、第三项改动> 4、第四项改动> ' /...
2020-02-13 11:20:33 9005 1
原创 Xcode中Assets.xcassets中的图片可以设置拉伸区域
配合这个方法[[UIImageView alloc] initWithImage:[UIImage imageNamed:kChatCellRightMessage inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil]]
2020-02-11 18:46:44 1271
原创 Unable to install / Could not locate installed application 问题
可能是某个第三方库的framework没有拉全处理方法:https://blog.csdn.net/allanGold/article/details/103969909
2020-01-14 11:29:25 1222
原创 CocoaPods清理本地缓存
更新了cocoaPods中第三方后,有可能cocoaPods中还存在以前老版本的缓存,所以,出现一些奇葩问题的时候,如果找不到问题,不妨清除一下cocoaPods缓存试试1. 打开终端,输入pod cache list | grep '/Users/你mac的用户名/Library/Caches/CocoaPods/Pods/Specs/Release/BBB',会列出所有本地已经缓存的第三方...
2020-01-14 11:17:35 2283
原创 【AFNetworking】 缓存策略问题
AFHTTPSessionManager *manager = [AFHTTPSessionManager new];manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
2020-01-02 15:29:41 520
原创 【SDWebImage】类图及时序图
High Level DiagramOverall Class DiagramTop Level API DiagramMain Sequence Diagram
2019-12-16 14:51:13 366
原创 【git diff】不输出东西
当git diff不输出东西时试试:git diff --cached参考:https://segmentfault.com/a/1190000011969554
2019-12-16 10:46:46 1089
原创 禁止UITextField 使用粘贴复制功能
在开发中有时候会遇到这样的需求,就是一个文本框里面的内容不允许用户复制,或者不允许用户将其它地方复制的内容粘贴进来,那怎么实现禁止 UITextField 的粘贴、复制呢?本文的方法是通过继承UITextField的子类重写方法的方式在 UITextField 中有这样一个方法:-canPerformAction:withSender:,下面来重写这个方法:- (BOOL)canPe...
2019-12-12 10:21:08 654
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人