自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HuberCui的博客

iOS小白开发遇到的问题和总结

  • 博客(55)
  • 收藏
  • 关注

原创 fastlane安装

运行一下bundle update就可以更改Gemfile.lock中的依赖版本。fastlane 安装有两种方式:brew 和gem。会自动安装最新版本fastlane,安装目录在。Gemfile中可以指定fastlane版本。目前没有发现如何安装过往版本和多个版本。可以有多个fastlane。1.brew 安装与卸载。2.gem安装与卸载。

2023-06-02 17:01:13 982

原创 fastlane 打包增加版本号报错

fastlane的使用

2022-06-12 21:52:23 648

转载 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&gt...

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

原创 导入别人flutter修改sdk路径

 需要配置Dart SDK路径

2018-12-27 16:56:55 4141

原创 导出沙盒文件

真机下device and simulators模拟器直接复制打印的路径,mac上前往文件夹就行

2018-12-04 11:10:09 1480

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除