- 博客(55)
- 收藏
- 关注
原创 fastlane安装
运行一下bundle update就可以更改Gemfile.lock中的依赖版本。fastlane 安装有两种方式:brew 和gem。会自动安装最新版本fastlane,安装目录在。Gemfile中可以指定fastlane版本。目前没有发现如何安装过往版本和多个版本。可以有多个fastlane。1.brew 安装与卸载。2.gem安装与卸载。
2023-06-02 17:01:13
982
转载 Flutter ios打包报错 cannot load such file — sqlite3 (LoadError)
Flutter命令行 flutter build ipa 打包报错cannot load such file — sqlite3 (LoadError)xcode kernel_require rb require usr/bin/ipatool:24The data couldn’t be read because it isn’t in the correct format[+14639 ms] 2021-12-27 17:25:00.807 xcodebuild[13713:5.
2022-05-06 11:46:44
1016
原创 记一次Android studio卡在启动页
某天早上打开电脑,Android Studio卡在了启动页,折腾半天没有解决,然后安装低版本AndroidStudio可以运行,但是项目报错。。。最终,删除了 ~/Library/Caches/Google中的对应AndroidStudio文件夹,重启!!...
2022-04-26 00:01:29
3531
1
原创 Future小例子
void eventLoopDemo() { print('eventLoopDemo #1 of 2'); Future.microtask(() => print('microtask #1 of 3')); //使用delay方式,是将此task放到queue的尾部, //若前面有耗时操作,不一定能准时执行 new Future.delayed( new Duration(seconds: 1), () => print('event #1 (delaye.
2022-01-23 15:27:52
1835
原创 如果有两个Xcode,Flutter如何选择
sudo xcode-select --switch /Applications/Xcode12.5.app/Contents/Developer指定Xcode12.5.app再执行sudo xcodebuild -runFirstLaunch
2022-01-22 11:47:47
2060
原创 Flutter环境配置
vim ~/.bash_profile 新建文件 open ~/.bash_profilevim ~/.zshrc 新建文件 open ~/.zshrc export ANDROID_HOME="/Users/yaobangmang/Library/Android/sdk" export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools export PUB...
2022-01-14 10:14:26
178
原创 记一次iOS与H5交互导致上线差点延迟的问题
临时测试到的iOS版本低版本:iOS14.3及一下高版本:iOS14.7及以上我们这里用了- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{}可以用来拦截H5界面点击事件的Url,
2021-12-26 19:03:49
1150
原创 关于NestedScrollView中的SliverAppBar的expandedHeight动态获取
在写项目使用NestedScrollView折叠的时候,遇到一个问题,FlexibleSpaceBar中的内容需要动态展示,有的需要数据返回来可能隐藏,导致高度不定,但是SliverAppBar中expandedHeight只能固定写死,所以只能另寻其他途径获取这个高度。copy一份FlexibleSpaceBar中的代码,另外写进一个StatelessWidget中,设置一个GlobalKey。 现在需要处理请求,在请求成功的回调中这样写,利用请求成功的第一帧来获取高度 WidgetsBi.
2021-04-02 14:56:37
1093
1
原创 flutter构建的漫画app
用flutter构建了有妖气漫画,主体阅读功能已经实现,搜索等其他页面后续会加上,欢迎来踩!https://github.com/HuberCui/CartoonFlutter
2020-06-11 19:05:20
904
3
原创 Flutter中ListView顶部有空白
ListView头部有一段空白区域,是因为当ListView没有和AppBar一起使用时,头部会有一个padding,为了去掉padding,可以使用MediaQuery.removePadding 包裹这个ListViewMediaQuery.removePadding(context: context,removeTop: true, child: _buildListView('aaa'))如下图对比...
2020-06-02 20:02:29
2618
1
原创 XB_多线程(安全)
1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源。 比如多个线程访问同一个对象、同一个变量、同一个文件。 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题。 使用线程同步技术(同步,就是协同步调,按照预定的先后次序进行),常见的线程同步技术是:加锁 线程同步方案:OSSpinLock 、os_unfair_lock 、pthread_mutex 、dispatch_...
2019-12-19 18:23:28
337
原创 XB_多线程(1)
1.下面代码打印什么?- (void)test2{ dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_async(queue, ^{ NSLog(@"1"); // 这句代码的本质是往Runloop中添加定时器,注意:已经拿到RunLoop,并添加定...
2019-12-19 15:49:42
214
原创 XB_RunLoop(应用)
1.控制线程生命周期(线程保活) [[MJThread alloc] initWithBlock:^{ NSLog(@"%@----begin----", [NSThread currentThread]); // 往RunLoop里面添加Source\Timer\Observer [[NSRunLoop currentRun...
2019-12-19 15:15:24
295
原创 XB_RunLoop
1.RunLoop对象iOS中有两套API来访问和使用RunLoopCoreFoundation框架:CFRunLoopRef,是开源的Foundation框架:NSRunLoop,基于CFRunLoopRef的一层OC包装2.获取RunLoop对象[NSRunLoop currentRunLoop]; // 获得当前线程的RunLoop对象CFRunLoopGetCur...
2019-12-19 14:07:49
214
原创 XB_runtime(应用)
例子: 1.可以获取成员变量信息,也可以设置和获取成员变量的值 可以用来对模型赋值json解析的数据,也可以通过KVC对未公开的成员变量进行修改 self.textField.placeholder = @"请输入用户名"; [self.textField setValue:[UIColor redColor] forKeyPath:@"_...
2019-12-18 17:43:11
271
原创 XB_runtime(消息发送)
前言:前言1.方法的底层结构struct method_t{ SEL name; //函数名 const char *types;//编码(返回值类型、参数类型) IMP imp;//指向函数的指针(函数地址)}SEL代表函数名,一般叫做选择器,底层结构跟char *类似 可以通过@selector() 合sel_registerName()获...
2019-12-18 17:12:39
303
原创 Class中的isa指针本质
1.iOS存储优化BOOL类型占1字节,如何将多个BOOL类型数据存储在一个字节中?可以用一字节的每一位表示一个BOOL类型实现原理#import "Person.h"#define TallMask (1<<0) //表示1左移一位:0b 0000 0001#define RichMask (1<<1) //表示1左移一位:0b 0000 0010#d...
2019-12-13 15:51:15
308
原创 XB_block(3)
1.__block的内存管理我们已经知道,__block修饰符会把auto变量包装成一个对象1.当block在栈上时,并不会对__block变量产生强引用 2.当block被copy到堆时,会调用block内部的copy函数,copy函数内部会调用_Block_object_assign函数, _Block_object_assign函数会对__block变量形成强引用(retain),...
2019-12-09 17:51:22
211
原创 XB_block(2)
1.block的copy在ARC环境下,编译器会在以下情况下自动将栈上的block复制到堆上block作为函数的返回值typedef void (^MJBlock)(void);MJBlock myblock(int age){ return ^{ NSLog(@"---------%d",age); };}int main(int argc,...
2019-12-09 12:36:35
274
原创 XB_block(1)
1.block的本质block本质上是一个OC对象,内部封装了函数调用和函数调用环境,底层结构如下图,第一位是__block_impl,第二位是__main_block_desc_0,后边是捕获的变量。其中__block_impl中存有一个FuncPtr的函数指针,block通过该指针调用了内部的函数。注意:当调用函数的时候理论上应该是block-->impl.FuncPtr这样...
2019-12-08 18:35:05
257
原创 XB_Category(3)
默认情况下,因为分类底层结构只有属性列表和协议列表方法列表等,但是偏偏没有成员变量列表,所以分类不能添加成员变量,但是可以通过关联对象来间接实现,但并不是这个对象真正意义上的成员变量。虽然分类的属性自动生成了set和get方法的声明,但是并没有生成set和get方法的实现。1.添加关联对象void objc_setAssociatedObject(id object, const voi...
2019-12-08 16:20:34
246
原创 XB_Category(2)
1.+(void)loadload方法在runtime加载类、分类的时候调用,不管是否使用了这个类,都会调用load方法,并且在程序运行过程中只调用一次,1>load方法也会随着Category合并到元类中的方法列表中,所以如果手动调用load方法也是遵循objc_msgSend消息发送机制的比如[NSPersonload],如果没有实现,会调用父类的load方法实现。2&...
2019-12-06 18:27:23
254
原创 XB_Category(1)
首先分类的底层结构如下,也有类名,比如(Person)、对象方法列表、类对象方法列表、协议列表struct _class_t { struct _class_t *isa; struct _class_t *superclass; void *cache; void *vtable; struct _class_ro_t *ro;};//分类的结构struct _cate...
2019-12-06 16:45:11
209
原创 XB_KVO与KVC
1.KVOKVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变KVO本质是利用RuntimeAPI动态生成一个子类,并且让这个instance对象的isa指向这个全新的子类,当修改instance对象的属性时,会调用Foundtion的_NSSetXXXValueAndNotify函数,该函数包含三部分willChangeValueF...
2019-12-05 18:04:21
591
原创 XB_类对象的分类(2)
1.isa指针与class对象的superclass指针的指向/*------------isa指针--------------------------------------*/1>instance的isa指针指向class当调用对象方法的时候,通过instance的isa指针找到class,然后在class中找到对象方法的实现进行调用2>class的isa指针指...
2019-12-05 15:00:27
239
原创 XB_对象的分类(1)
对象分实例对象、类对象、元类对象三种类型1.实例对象(instance对象) NSObject *obj = [[NSObject alloc]init];是通过类alloc出来的对象,里边存储的有isa指针和成员变量2.类对象(class对象) NSObject *object1 = [[NSObject alloc] init]; NSObject *object2 ...
2019-12-05 10:53:40
340
原创 XB_OC对象的本质
1.对象简介OC对象是基于C/C++的结构体实现的,可以用以下命令把OC文件转换成CPP文件,这样可以看到OC对象的结构体样式xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件以下都是基于64位环境//OC样式的@interface NSObject{//实际上隐藏着一...
2019-12-04 17:05:47
236
原创 __attribute__的一些使用
1.objc_subclassing_restricted#import <UIKit/UIKit.h>#import <objc/runtime.h>NS_ASSUME_NONNULL_BEGIN__attribute__((objc_subclassing_restricted))//禁止该类被继承@interface AAA : UIView-...
2019-10-14 09:34:35
1203
原创 浅析class 、superclass、isMemberOfClass、isKindOfClass
经典图抛出问题 BOOL res1 = [(id)[NSObject class] isKindOfClass:[NSObject class]]; BOOL res2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]]; BOOL res3 = [(id)[Student ...
2019-08-19 14:38:01
305
原创 ios weak实现原理用的表伪代码
1.伪代码模拟weak用到的主要表struct weak_referrer_t{ int weakPtr;//瞎写的不做参考};//hash表struct weak_entry_t{ int index; //存储弱引用该对象的指针的指针的数组 weak_referrer_t inline_referrers[3]; id referent;...
2019-08-16 17:57:41
270
原创 Flutter 报错centerSlice was used with a BoxFit that does not guarantee that the image is fully visible
我们在做图片拉伸的时候会出现这个报错,查了很多资料都解释不多,这次用代码跟踪并整理一下什么情况下会报错上一个用到的一个192x78的png,记住这个尺寸!!!1.正常情况 Image image = new Image.asset( 'asset/images/icon_bubble1.png', width: 183, height: 79, ...
2019-07-05 17:07:33
6047
3
原创 Flutter中centerSlice的一些应用
centerSlice的作用是把普通的图片设置成类似于安卓中的.9图,用于图片拉伸,比如聊天的气泡。至于什么是.9图,自行百度这里只讲一下我个人的一些使用,先上用到的图片这里方块是气泡主体,三角是左上角的拼接,这里方块是48x48先上代码跟效果图 //气泡 _bubbleBody() { return Container( align...
2019-07-05 15:50:41
9499
3
原创 Flutter中Mixin的一些理解
使用Mixin前先复习一下继承与实现1.extends +implementsabstract class First { void doPrint() { print('First'); }}abstract class Second { void doPrint() { print('Second'); }}class Father {...
2019-06-24 12:38:16
2947
1
原创 Flutter 函数
Flutter 有两种可选参数,一种是基于名称,一种是基于位置{}是基于名称的,[]是基于位置的1.基于名称Person(String name,{String gender,int number}){}//调用Person('zhangsan')//可不传Person('zhangsan',gender:'man',number:20);2.基于位置Pers...
2019-04-15 13:38:35
1213
转载 Flutter中material风格使用CupertinoAlertDialog报错
localizationsDelegates: [ ..... const FallbackCupertinoLocalisationsDelegate(),]class FallbackCupertinoLocalisationsDelegate extends LocalizationsDelegate<CupertinoLocalizations>...
2019-03-30 15:43:32
1504
原创 Flutter中添加Iconfont矢量图
flutter中使用https://www.iconfont.cn/中的图标1.新建项目,添加一些图标到项目中 然后点击下载到本地,找到 iconfont.ttf文件 2.打开flutter项目,将字体导入到文件夹中,没有文件夹的自己建3.找到pubspec.yaml文件,添加引用路径这里需要注意右边第一个fonts左边的空格,如果不对会引用不到,很坑爹,fam...
2019-01-10 11:15:35
8160
4
原创 iOS利用cocopod接入Flutter
1.创建一个新的iOS工程,并添加cocopod2.在iOS工程中输入命令$ flutter create -t module android_flutter_module 该命令将会创建一个module类型的flutter工程3.修改Podfile文件# Uncomment the next line to define a global platform for y...
2018-12-27 17:57:45
1570
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人