- 博客(52)
- 资源 (2)
- 收藏
- 关注
原创 解决SliverAppBar 底部留白
SliverAppBar 的属性 flexibleSpace子控件 tabbar ,设置了高度44。之后发现底部多了空白,SliverAppBar设置 toolbarHeight: 44 (44 是设计要求的高度)。解决方法:去掉flexibleSpace的高度设置,子控件自适应。如图红色区域,找了很多解决方法都不尽人意。
2023-08-31 11:59:59 167
原创 微信短链跳转到小程序指定页面调试
首先说下背景:后端给了短链地址,但是无法跳转到指定页面。指定的页面我们是h5页面。2、按照小程序的要求的URL Scheme输入。另外后端给的短链打开之后,拷贝尾缀作为t='xx'7、控制台打印location.href 找到对应的页面路由进行排查。在url 解码器上进行解码。注意只需要编码link=后面的内容。5、刷新如果没有到指定页面,则需要在断点调试代码。如果小程序端没有问题,则需要检查h5是否有报错。3、刷新页面:在页面的左下角可以找到页面参数。4、将link='xxx'的内容贴入其中。
2023-08-30 16:55:48 1324
原创 数据结构-简介【1】
什么是数据结构?数据结构是计算机存储、组织数据的方式数据结构包含:线性结构、树形结构、图形结构1.线性表:是具有n个想同类型元素的有限序列,所有的元素排成一条线。1.1 数组是一种顺序存储的线性表,所有原素的内存地址是连续的...
2022-05-30 17:11:50 119
原创 Flutter Channle 实践
在介绍Platfrom Channel之前,我们要先使用命令新建一个plugin.才能继续往下开展工作。flutter create --template=plugin --org com.example --platforms=android,ios -a java -i objc stard本文提供的demo是Flutter与iOS交互的过程简单介绍Platfrom Channel的三个API一.MethodChannel : Flutter与原生方法相互调用,用于方法掉..
2022-04-11 11:27:14 2656
原创 Flutter 面试问题
1.stream跟changeNotifer区别2.provider的是如何实现开关设置的3.关于stream设计一个总线开关器4.一个复杂的widget树上挂载一个Stream,其中一个根节点的视图需要变更数据即刷新,如果控制最小化性能消耗,如何做?5. .. 与.的区别6. flutter 怎么做通知7.dart 是单线程怎么请求数据8.flutter 如何做大文件传输答:之前上传使用的是uploadFileStream来上传文件,它会把文件分块读出来,添加分块签名,然后
2021-05-21 17:09:16 4792
原创 Shell 学习
备注:都是自己学习总结的小demo,方便自己复习#!/bin/bash#在bash中,$( )与` `(反引号)都是用来作命令替换的。#命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。#在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:#``很容易与''搞混乱,尤其对初学者来说,而$( )比较直观。#最后,$()的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。#for.
2021-05-18 10:56:30 323
原创 iOS面试题:离屏渲染及UIView的渲染机制
一 首先要了解计算机的渲染原理1.CPU:图片的解码、显示等2.GPU:人脸识别、编码音视频,进行一些复杂的计算。3.得到像素信息,然后显示到屏幕上,像素信息缓存到物理屏幕上。
2021-04-29 16:37:51 669
原创 iOS高级工程师面试题
1.讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为什么对象方法没有保存的对象结构体里,而是保存在类对象的结构体里?对象的结构体里存放着isa指针以及成员变量,对象的isa 指向类对象。类对象的isa 指向元类对象。类对象和元类的结构体有isa、superclass、cache、bits,bits里存放着class_rw_t的指针。【对象方法没有保存在对象结构里,而是保存在类对象的结构体中】答:对象方法是每个对象可以相互共用的,如果每个对象都存储一份方法列表,对内存来说
2021-03-19 16:00:37 717
原创 使用FVM 对FLutter 多版本进行切换
brew tap xinfeng-tech/fvm 2. brew install fvm 3.bash_profile 配置 如下 export FVM_DIR="$HOME/.fvm" source "/usr/local/opt/fvm/init.sh"4.修改环境变量路径(bash_profile文件中) export PATH=/Users/xuzhenzhen/.fvm/current/bin:$PATH 5.新建 .fvm 文件夹...
2020-10-26 10:01:36 2349
原创 史上最细组件化步骤之远程私有库资源依赖 (xib 以及图片资源)3
2.1,xib在原有生成的模版文件的classes中加入如下文件view中带xib修改podspec文件保存之后,直接进入example文件中,install。测试拖入的文件,运行报错。(xib路径的问题)2.2 图片资源插播一条:使用https://github.com/steventroughtonsmith/cartool可以解压资源文件包里的car,这个工...
2019-09-11 12:24:56 409
原创 史上最细组件化步骤之私有库分支subspec创建2
备注:我是先自己操作一遍,然后在本地写了个文档,如果命令中出现中文符号的话,大家自己修改一下。谢谢支持。我会在文章中附上我的文档。1.pod seach 查看AFNetworking如下:这是af的subspec,接下来我们来学习如何创建我们自己的subspec。2.subspec子仓库,方便调用其中的一个。修改podsepec文件 如下:完成之后执行以下命令:进入po...
2019-09-11 10:47:49 1195
原创 史上最细组件化步骤之创建远程私有库1
一:创建自己的远程索引库1.在码市上注册一个账号,新建一个仓库2.终端pod repo 查看 确认是否只有一个master3.pod repo —help 查看命令如下:Commands: + add Add a spec repo + add-cdn Add a spec repo backed by a CDN + lint ...
2019-08-22 20:49:02 227
原创 iOS 本地私有库创建(2)
1.在桌面新建个文件/Users/xuzhenzhen/Desktop/本地私有库/Local/testPerson/Classes2. 添加git2.1进入 /Users/xuzhenzhen/Desktop/本地私有库/Local/testPerson 文件夹git initgit add .git commit -m ‘x’因为是本地仓库 不需要上传到远程仓库...
2019-08-21 15:04:06 130
原创 iOS 创建自己的Cocoapods 公开库以及spec文件(一)
在本地桌面新建一个文件夹testLib ,里面在建个文件夹,命名Classes规范起见,文件夹新建person.h peroson.m 两个文件 在github 上新建个远程项目testP,复制ssh地址。https://github.com/XUZHENxuzhen/testP.git 进入终端,进入到testLib文件夹下git initgit add .git commit -...
2019-08-20 16:18:01 361
原创 Flutter入门配置的坑
学习一直是做技术的必经之路,开始按照官网配置真的是入门到放弃,后来有个师兄介绍了我一个好文章。以此来记录我的flutter的环境配置首先flutter 是需要依赖于brew,但是brew 是根据ios 系统版本来的,开始这块我不清楚,也不知道系统自带了brew。于是一直在安装/更新上碰壁。由于墙的原因,执行brew update 一直失败。我就放弃了update。我的mac 系统10.14.1...
2019-07-01 16:43:47 644
原创 iOS 音视频FFmpeg 框架分析
一:简单了解FFMpeg 以及他的组成部分1.什么是FFmpeg?FFmpeg 即是一款音视频编码工具也是一款音视频编解码开发套件,作为套件为开发者提供了丰富的音视频处理的调用接口2.FFmpeg的基本组成?FFmpeg 框架的基本组成包含AVFormat /AVCodec/AVFilter/AVDevice,AVUtil等(2.1)FFmpeg的封装模块AVFormatA...
2019-06-19 16:34:26 1882
原创 IOS ijkplayer 集成遇到的问题
一:首先到github下载demo进入到ijkplayer master下,安装ffmepg 执行./init-ios.sh ,报错。./init-ios-openssl.sh 需要https 注意,需要执行此步。二:编译ffmepg我没有解决以上安装报的错误,直接按照github上的命令进行执行cd ios./compile-ffmpeg.sh clean 清楚缓存...
2019-04-12 14:26:06 1187
原创 iOS:学习音视频的过程
一,音视频学习中涉及到的概念1.我们常见的音视频格式有.mp4,mkv.avi,正如我们常见的.word 需要word 工具打开,不同格式的音视频也需要不同格式的播放器打开,这种视频格式相当于存储视频信息的容器,里面包含了音频信息,视频信息和相关的配置信息(比如.mp4格式 音视频是如何关联的信息,如何解码等)2.封装格式:简单的来说就是一个容器,里面存储已经编码压缩好的视频数据 和 音频...
2019-04-10 16:23:18 9509
原创 iOS在调用main函数之前做了什么?
众所周知,一个app的入口就是main.m 里面的main函数,接下来我们来剖根究底的探讨下调用main函数之前,程序都做了哪些事情?动态链接库iOS 中用到的所有系统 framework 都是动态链接的,类比成插头和插排,静态链接的代码在编译后的静态链接过程就将插头和插排一个个插好,运行时直接执行二进制文件;而动态链接需要在程序启动时去完成“插插销”的过程,所以在我们写的代码执行前,动态...
2019-02-14 14:41:37 632
原创 容云即使聊天步骤
1.appdelegate.m 遵循协议RCIMConnectionStatusDelegate+RCIMReceiveMessageDelegate/*! 连接状态监听器: RCIMConnectionStatusDelegate IMKit连接状态的的监听器 @discussion 设置IMKit的连接状态监听器,请参考RCIM的connectionStatusDelegate属性。...
2019-01-18 15:27:19 407
原创 React Native 学习从0至1-第三篇
1.TabBarIOS->经典错误:不管是不是TabBarIOS,只要内部缺少组件都会报这个错误2. NavigatorIOS + TabBarIOS 示例import React, {Component} from 'react';import {Platform, StyleSheet, Text, View, Image, TextInput, Touc...
2019-01-15 15:14:30 249
原创 React Native 学习从0至1-第二篇-FlatList
1. 折腾了两三个小时才出来一个界面,先上坑2. 代码如下export default class App extends Component { render() { var data = []; for (var i = 0; i < 5; i++) { data.push({key: i, title: ...
2019-01-11 13:50:26 209
原创 React Native 学习从0至1-第一篇
一.新建一个ReactNative 项目步骤:1.进入终端使用终端命令:react-native init 项目名称2.使用cd进入项目文件路径3.运行reacnative 项目 终端命令:react-native run-ios 或者 在reacnative 项目中找到IOS文件夹,打开直接在xcode中运行。二.解决引入组建没有提示的问题步骤:去github 上下载ReactNat...
2019-01-10 11:42:07 384
原创 Swift 使用WKWebView 实现Swift 与JS 交互
功能一:删除京东手机版https://m.jd.com/右上角的登陆按钮 代码如下import UIKitimport WebKitclass ViewController2: UIViewController,WKNavigationDelegate { @IBOutlet weak var weView: WKWebView! override func v...
2019-01-03 15:21:25 1522
原创 MRC Copy 与MutableCopy的区别
拷贝的目的:产生一个副本,跟原对象之间互不影响。即修改原对象(或者副本)不会影响副本(或原对象)。深拷贝:生成一个新的对象,叫深拷贝浅拷贝:复制一个新的指针指向同一个对象,叫浅拷贝NSString *str1 = [[NSString alloc]initWithFormat:@"123"]; //copy mutableCopy 相当于alloc 一次,需要relea...
2018-12-06 16:39:56 428
原创 +load 与 +initialize的区别
先附上代码,load 方法的代码 我就不附上,大家可以自己动手测试一下。@interface XZPerson : NSObject@end#import "XZPerson.h"@implementation XZPerson+ (void)initialize{ NSLog(@"XZPerson-initialize"); }@end//////////...
2018-12-05 12:25:21 326
原创 CADisplayLink 与NSTimer 循环引用问题 ,NSTimer准时吗?
由下面代码可以看出 CADisplayLink 与NSTimer 中的targert 会发生强引用的关系,如何解决呐?@interface ViewController ()@property(nonatomic,strong)CADisplayLink *link;@property(nonatomic,strong)NSTimer *timer;@end@implemen...
2018-12-04 15:54:11 271
原创 OC Super的理解
//我们来看下以下代码打印的结果是什么?@interface XZPerson : NSObject - (void)run;@end@implementation XZPerson- (void)run{ NSLog(@"%s",__func__);}@end===============================...
2018-11-27 11:26:49 943
原创 IOS objc_msgSend执行流程
objc_msgSend大家应该不陌生吧,oc的方法调用,其实就是转换为objc_msgSend的函数调用。简答的可以理解为发消息,如果 方法调用 之后出现了经典的错误,unrecognized selector sent to instance... 也可以从以下三个阶段进行分析。objc_msgSend执行流程可以分为三个阶段消息发送 XZdog *dog = [[XZdog ...
2018-11-20 17:23:13 2053
原创 iOS 面试总结(2)
在这个公司待了三年,虽然我有足够的危机感,但是并没有让我提升多少,所以我迫切的想换个工作环境,于是去了几个公司面试,有个自称是用户在三亿左右的公司,且不说用户量是真是假。问了很多混合开发的东西,弱项,可想而知有多狼狈了吧。综合几家公司的面试,写了这篇文集,有问题可以留言。谢谢。1. 开发框架的选择:原生开发?混合开发?1.1原生开发:在应用的性能上以及用户体验上是最好的,但...
2018-11-20 10:03:17 884
原创 Runtime之 Class 结构的剖析
从源码objc_runtime-new.h 中可以看到struct objc_class : objc_object { // Class ISA; Class superclass; cache_t cache; //方法缓存 class_data_bits_t bits; //用于获取具体的类信息 class_rw_t *da...
2018-11-01 16:56:32 303
原创 Runtime 之 isa
要想学习runtime必须知道runtime的isa指针我们都知道新的iphone手记采用的都是arm-64架构,在arm-64之前,isa就是个普通的指针,存储着Class,Meta-Class对象的内存地址;从arm-64开始,对isa 进行了一个优化,变成了一个共用体(union)结构,还使用位域来存储更多的消息。union isa_t { isa_t() { } ...
2018-10-29 16:08:11 460
原创 Category源码分析
一,首先为啥要使用分类?开发中分类可以吧不同的功能分散到多个不同的文件及框架,减少单个文件的体积,方便管理 创建私有方法二,Category在编译时刻,都是独立的,各自生成各自的文件XZPerson#import <Foundation/Foundation.h>@interface XZPerson : NSObject@end#import "XZPer...
2018-10-11 12:24:51 250
原创 KVO实现原理
KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。下面来探讨一下KVO的本质1.新建一个XZPerson类#import <Foundation/Foundation.h>@interface XZPerson : NSObject @property(nonatomic,assign)int age;@e...
2018-10-10 10:43:07 602
原创 深入探索Block(一)
目录一 ,Block的本质 二,Block的变量捕获三,Block 的类型一 ,Block的本质.m 文件代码如下int main(int argc, const char * argv[]) { @autoreleasepool { int age = 10; void (^block)(void) = ^{ ...
2018-09-26 16:49:48 203
原创 React Native遇到的问题
1.WebStorm中的组件出现黄色下划线,以下是去掉下划线的方法 2.React Native 引入其他js文件严格遵循首字母大写的驼峰命名,巨坑。 3同一级目录引用问题...
2018-09-25 11:49:45 247
原创 IOS原生集成ReactNative
折腾了一天,看到网上很多帖子说原生集成RN使用cocopods 会报各种奇葩的错误,给我吓得赶紧使用拖拉文件的方式。哪知道一直没成功。尝试了下cocoapods集成RN,成功了,下面来分享下我的成功,嘻嘻~1.首先新建个xcode工程2.使用终端命令react-native init xxx ;xxx是RN的项目名称.3.新建一个文件存放RN集成到IOS原生项目需要的文件。...
2018-09-20 15:15:58 764
原创 APP启动优化
目录APP的启动分为两种:热启动/冷启动APP的冷启动主要包含以下几个阶段APP启动优化的步骤冷启动:app 还没开始启动,从零开始启动 热启动:app以及启动存在后台中,再次点击app 图标的一个种启动 一般app的启动优化主要是针对冷启动的。WWDC2016上Apple建议一个app的冷启动时间大概在400ms左右设。通过添加环境变量可以打印出APP的启动时间分析(E...
2018-08-22 16:41:36 134
原创 IOS 设置 UItableViewCell 分割线全屏
1. 干掉系统的 self.leftTableView.separatorStyle = UITableViewCellSeparatorStyleNone;然后自己添加UIView覆盖2.利用系统的属性设置IOS7:self.leftTableView.separatorInset = UIEdgeInsetsZero; IOS8: 在tableiview的代理方法- (UIT...
2018-08-06 15:01:50 336
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人