自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (12)
  • 问答 (1)
  • 收藏
  • 关注

原创 iOS中类和对象的底层原理

详细讲解iOS类和对象的本质,一层层一步步解开类和对象的神秘面纱,如果有不对的地方还请指导。**文章最后有个测试用例可以用来检验类和对象的底层实现原理**

2024-05-17 11:10:25 381

原创 三层交换机vlan设置

三层交换机vlan

2024-01-03 10:54:12 412

原创 交换机路由器(单臂路由Vlanif)

交换机vlan

2024-01-03 09:58:55 486

原创 git命令使用

GIT$ mkdir learngit 创建文件库$ cd learngit 进入这个库$ pwd 显示这个库的位置$ git init. 初始化这个库把readme.txt文件放到learngit库根目录下$ git add readme.txt 添加新文件$ git commit -m "wrote a ...

2022-12-09 10:21:00 226 1

原创 iOS Block底层原理

block本质上也是一个OC对象block 内部的isa指针继承自 NSObject,即可证明 block 即 OC 对象block 是封装了函数调用以及函数调用环境的OC对象1,定义一个blockint main(int argc, char * argv[]) { void (^myBlock)(void)=^{ NSLog(@"===="); }; myBlock(); return 0;}使用如下方式转换成cppxcrun -sdk

2022-01-14 10:51:25 2380

转载 iOS的runloop底层原理

https://juejin.cn/post/6844903588712415239

2022-01-13 15:12:52 156

原创 iOS对象销毁,释放Dealloc

1、对象销毁时会调用dealloc方法,方法内部调用_objc_rootDealloc函数- (void)dealloc { _objc_rootDealloc(self);}2、_objc_rootDealloc函数内部调用了对象的rootDealloc函数void_objc_rootDealloc(id obj){ assert(obj); obj->rootDealloc();}3、rootDealloc函数释放对象,分两种情况快速销毁和正常销毁

2022-01-09 16:55:10 2287

原创 iOS的引用计数减1

对象释放时,调用这个方法把引用计数0ALWAYS_INLINE bool objc_object::rootRelease(bool performDealloc, bool handleUnderflow){ if (isTaggedPointer()) return false; bool sideTableLocked = false; isa_t oldisa; isa_t newisa; retry: do { oldisa

2022-01-09 16:06:43 662

原创 iOS增加引用计数

1、对象调用retain函数会增加引用计数// Replaced by ObjectAlloc- (id)retain { return ((id)self)->rootRetain();}2、rootRetain函数ALWAYS_INLINE id objc_object::rootRetain(){ return rootRetain(false, false);}ALWAYS_INLINE id objc_object::rootRetain(boo

2022-01-09 16:05:21 582

原创 iOS对象创建过程

1、调用alloc函数,内部调用了_objc_rootAlloc函数,并传入self参数,self其实是isa,也就是类对象+ (id)alloc { return _objc_rootAlloc(self);}2、_objc_rootAlloc函数调用了callAllocid_objc_rootAlloc(Class cls){ return callAlloc(cls, false/*checkNil*/, true/*allocWithZone*/);}3、call

2022-01-09 15:16:05 627

原创 iOS的isa指针

isa指针是什么?isa指针指向的是类对象,类对象全局只有一个,因此每个类创建出来的对象都会保存类对象的地址,也就是isa,通过isa就可以查询到这个对象的属性和方法,协议等;isa数据结构如下:可以看出isa是一个联合体类型的数据;属性有Class 类型指针cls,和uint类型的bits,以及结构体;可以看出这个联合体isa的内存是8个字节union isa_t { isa_t() { } isa_t(uintptr_t value) : bits(value) { }

2022-01-09 14:47:44 2319

原创 iOS自动释放池AutoreleasePool

介绍iOS的自动释放池原理,把底层的方法分析一遍,并给每个方法都添加了注释我们一般使用自动释放池是直接使用@autoreleasePool方法,如下底层会帮我们再次翻译成另一种形式int main(int argc, const char * argv[]) { @autoreleasePool{ } return 0;}底层会翻译成这样创建一个局部变量接收push函数的返回值,查看objc_autoreleasePoolPush和o

2022-01-09 14:04:55 1077

原创 iOS弱引用表 SideTable weak_table_t weak_entry_t

一、DisguisedPtr伪装指针类介绍主要是用来把对象的指针映射到long类型的数值,来保存对象的指针,至于为什么不直接保存指针,估计是处于安全考虑,防止空指针造成的坏的影响;地层大量使用了DisguisedPtr,DisguisedPtr也不是很复杂;可以看出DisguisedPtr是个模版类,可以看作是iOS中的范型,里面定义了一个属性value,用来保存处理后的对象指针;是个unsigned long类型,和其他几个函数;template <typename T>cla

2022-01-07 14:34:50 1185

原创 iOS OpenGl ES着色器

首先创建两个文件分别为simple.frag和simple.vertsimple.frag内容const char* SimpleFragmentShader = STRINGIFY(varying lowp vec4 DestinationColor;void main(void){ gl_FragColor = DestinationColor;});simple.vert内容const char* SimpleVertexShader = STRINGIFY(.

2021-12-27 10:31:13 1928

原创 RGB转YUV

YUV常见格式是以下四种,其他的格式自行搜索,以下是转换方法I420: YYYYYYYY UU VV =>YUV420PYV12: YYYYYYYY VV UU =>YUV420PNV12: YYYYYYYY UVUV =>YUV420SPNV21: YYYYYYYY VUVU =>YUV420SP以下转换方法是RGBA的像素格式,如果是ARGB,RGB,BGR等,自行去转换,或者调整方法;I420: YYYYYYYY UU VV =>YUV420P转换方法ch

2021-12-17 09:58:04 1274

原创 YUV数据格式

YUV存储方式YUV存储方式主要分为两种:Packeted 和 Planar。Packeted方式类似RGB的存储方式,以像素矩阵为存储方式。Planar方式将YUV分量分别存储到矩阵,每一个分量矩阵称为一个平面。YUV420即以平面方式存储,色度抽样为4:2:0的色彩编码格式。其中YUV420P为三平面存储,YUV420SP为两平面存储。常用的I420(YUV420P),NV12(YUV420SP),YV12(YUV420P),NV21(YUV420SP)等都是属于YUV420,NV12是一种两

2021-12-16 19:28:21 848

原创 image与RGB互相转换

Get data from a image较简单,根据已有的 image 的属性,创建 CGBitmapContext, 这个 context 是带有直接访问的指针的。然后将 Image 绘制到这个 context, 得到裸数据。 CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(srcImg.CGImage); CGColorSpaceRef colorRef = CGColorSpaceCreateDeviceRGB(); fl

2021-12-15 15:33:43 516

原创 UIimage转视频

/** * 裁剪图片 * * @param image 图片 * @param bounds 大小 * */+ (UIImage *)croppedImage:(UIImage *)image bounds:(CGRect)bounds{ CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], bounds); UIImage *croppedImage = [UIImage imageW

2021-12-10 20:31:45 151

原创 UIImage截图旋转

截取的方式一一开始因为对UIGraphics的方法不怎么熟悉,以为只能对UIView的整个截屏。于是就弄出了这种截取部分图片的方式,就是用CropView包住ImageView然后截取CropView。虽然效果也还不错也能满足一些需求,但是这样的截图变得不高清,所以最后放弃了用它。/// 截图 + (UIImage *)cropImageWithOldImage:(UIImage *)image OldFrame:(CGRect)oldFrame CropFrame:(CGRect)cropFrame

2021-12-10 20:29:27 145

原创 IOS UIview截图

UIview截图(UIImage *)captureScreen {UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f);[self.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();

2021-12-10 20:24:11 576

原创 Object-C ,runtime原理,oc对象的原理,oc对象在底层的实现原理

Object-C-runtimeObject-C ,runtime原理,oc对象的原理,主要记录oc对象在底层的实现原理;项目代码地址GitHub//// Person.m// Interview001-OC对象的本质//// Created by xingye yang on 2021/9/18.// Copyright © 2021 xingye. All rights reserved.//#import "Person.h"#import <objc/runti

2021-09-18 15:51:55 134

原创 QT macdeployqt打包MAC APP

1,cd到编译的release文件cd /Users/Desktop/build-Release2,macdeployqt test.app -qmldir=/Users/lDocuments/test -dmgtest.app是release文件中生成的,-qmldir是把qml文件加载到APP中,如果没有不用加载。我的qml文件在/Users/lDocuments/test文件夹中...

2021-03-04 18:58:40 374 1

原创 flutter widget创建过程

StatelessWidget 创建 -> createElement() -> [ StatelessElement{_dirty = true _active = true} -> Mount() -> _filstBuild() -> rebuild() -> performRebuild()] -> build() -> widget.build()StatefulWidget创建-> createElement()->[Stat

2021-02-18 10:40:05 281

原创 c++和qml信号和槽互相通信

qml信号绑定c++的槽函数c++代码:1,在c++定义个槽函数public slots: void doDecode(void);qml代码:1,在qml中定义一个信号:signal startDecode()2绑定c++的槽,xxx是注册到qml的c++对象Component.onCompleted: { startDecode.connect(xxx.doDecode) }c++信号绑定到qml的槽函数c++代码:1,在c++中定义一个信号s

2021-02-03 14:15:39 643

原创 iOS自动布局NSLayoutConstraint

iOS自动布局NSLayoutConstraint(1)自动布局使用可视化语言:VFL(Visual Format Language)[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20@500-[_view1(==_view2)]-space-[_view2(==_view1)]-40-|"options:NSLayoutFormatDirectionLeftToRightmetrics:@{@"space":@20}views:NS

2021-01-18 10:44:53 414

原创 flutter的UIKitView和platformview之iOS

flutter添加iOS原生的platformview,遇到的问题://关于编码格式一定要和ios那边统一,并且和传递的参数类型匹配,//如果flutter传递的是json,map,编码必须是JSONMessageCodec,//flutter传递的是string,编码必须是Stringcodec,否则会出错,加载不了viewflutter代码:@override Widget build(BuildContext context) { return Scaffold(

2021-01-16 14:58:38 1334

原创 flutter纹理之iOS

需求播放h264格式的视频,在iOS端进行解码得到CVpixelbuffer,在flutter上播放,用到纹理。flutter端:1,创建一个MethodChannel _channel = MethodChannel(‘opengl_texture’);用来和iOS端通信,主要是从iOS端获取_textureID,2,把Texture(textureId: _textureID,)添加到widget上,这个用来播放视频的,原理是从底层获取iOS端的CVpixelbuffer,把CVpixelbu

2021-01-16 13:11:08 1674 2

原创 flutter 地图map view

关于flutter插件地图的使用flutter_mapflutter_mapA Dart implementation of Leaflet for Flutter apps.一个基于leaflet的地图插件,也就是说flutter_map基于的是瓦片地图,那么在兼容性上可以说比较好用了。横向对比目前主要的地图插件主要有: flutter_map map_view``amapmap_view先说下map_view这个插件,这个插件主要是用来展示google map使用。 由于一个我们都知道的原

2021-01-14 19:14:40 407

原创 新版本flutter混编安卓没有flutter类

Flutter升级到1.12后遇到的问题前些日子评论区里wangwhatlh同学反馈遇到了程序包io.flutter.facade不存在问题,起初我运行了一下之前的项目,发现可以正常运行,加上我自己有一段时间没有用过Flutter了,也就没太重视这个问题。说来也是惭愧,最近又陆续有多位小伙伴反馈了这个问题,我才终于意识到这是一个普遍性问题,简单查了一下了解到这个错误是Flutter 1.12版本废弃了io.flutter.facade包导致的,我自己更新了Flutter版本后重新运行项目也遇到了这个问题

2021-01-13 19:53:23 1220

原创 android混编flutter

首先Android工程文件要和flutter在同级目录;1)创建flutter moduleflutter create -t module flutter_m2)在Android项目的 setting_gradle 里面添加setBinding(new Binding([gradle: this, mainModuleName: '安卓工程名']))evaluate(new File( settingsDir.parentFile, 'flutter_m/.an

2021-01-13 18:45:29 223

原创 iOS项目中混编flutter和打包发布

如果已有iOS项目,并且想在项目中添加flutter,可以按照以下方法处理。1首先iOS项目同级目录下创建一个flutter_module,这个同级目录不是在iOS项目的文件里面,flutter create -t module flutter_moduleAPPSS是我的以前的iOS项目文件,然后再同级目录下创建flutter_m在podfile文件添加flutter_application_path = '../flutter_m'load File.join(flutter_appli

2021-01-13 16:24:21 735 1

原创 ios 删除SceneDelegate.h

直接删除SceneDelegate.h 和SceneDelegate.m文件,在appDelegate.h中加上@property (strong, nonatomic) UIWindow * window;在appDelegate.h中删掉SceneDelegate的代理方法最后在info.plist文件中移除Application Scene Manifest

2021-01-13 16:12:51 623

原创 flutter本地存储

flutter文件在pubspec.yaml添加一下依赖dio: ^3.0.8shared_preferences: ^0.5.3+5localstorage: ^2.0.0path_provider: ^1.6.5import 'dart:io';import 'package:flutter_file_path_provider/flutter_file_path_provider.dart';import 'package:localstorage/localstorage.dart

2021-01-07 14:02:38 725

原创 flutter图片资源管理

Android studio安装flr插件;安装完成后选在tools-》flr-》init 生成r.g.dart文件使用是直接导入r.g.dart文件,使用R.image.图片名称pubspec.yaml添加intl: ^0.16.0flutter_svg: ^0.19.0r_dart_library: git: url: https://github.com/YK-Unit/r_dart_library.git ref: 0.2.1// ignore: un

2021-01-07 13:21:29 786 1

原创 Qt添加图片资源文件

1)选中resources文件夹,新建一个qrc文件,命名为images,会生成一个images.qrc2)选中images.qrc右键,open in edite,修改前缀为img,前缀可以是任意名,最好是简单易懂的。3)选中添加文件,添加需要的图片即可。4)在qml中使用 img是我们写的前缀,images是我的子文件夹Image { id: img source: "qrc:/img/images/check.svg" }...

2021-01-07 10:10:51 620

原创 Qt国际化

1)首先在pro文件添加一个中文和一个英文TRANSLATIONS = zh_CN.ts en_US.ts2)点击工具-》外部-》qt语言家-》lupdate,会在文件生成两个.ts文件;3)然后选中ts文件右键-》用其他打开-》Qt linguist打开,修改翻译文字;4)再点击工具-》外部-》qt语言家-》lrealse,会在文件生成两个.qm文件;5)把.qm文件放到qrc资源文件中,在main文件中添加代码这样写QTranslator translator; if( tru

2021-01-07 09:29:41 129

原创 Qml调用C++方法,属性,信号,槽

创建一个类,定义属性和方法,信号,槽#ifndef QMLOBJ_H#define QMLOBJ_H#include <QObject>#include<qdebug.h>class QmlObj: public QObject{ Q_OBJECT //这个宏定义必须写这里 //在qml中可以访问c++中的属性,方法,信号和槽 //访问属性要使用Q_PROPERTY注意写法,比如访问age这个属性, //READ: qml获取age的值,WRITE:qml

2021-01-06 18:52:24 2141

原创 Qt信号和槽

创建一个信号类,用来发送信号#ifndef SIGNLTEST_H#define SIGNLTEST_H#include <QObject>class SignlTest : public QObject{ Q_OBJECTpublic: explicit SignlTest(QObject *parent = nullptr); //在这里发送信号 void send(){ emit sendSignal();//发送信号 }public:signa

2021-01-06 16:48:57 94

原创 flutter国际化

默认情况下,Flutter仅提供美国英语本地化。要添加对其他语言的支持,应用程序必须指定其他MaterialApp属性,并包含一个名为的单独包-“flutter_localizations”。 截至2017年10月,该软件包支持15种语言。要使用flutter_localizations,请将该包作为依赖项添加到您的pubspec.yaml文件中:dependencies: flutter: sdk: flutter flutter_localizations: sdk: flu

2021-01-05 17:11:29 927

原创 flutter自定义路由转场动画

自定义路由转成动画自定义转成路由需要继承PageRouteBuilder并在重写父类方法中实现转成方法的class CustomTransitionRouteBuilder extends PageRouteBuilder { final Widget widget; SlideTransitionRouteBuilder( this.widget) : super( //动画时间 transitionDuration: const Duration(mi

2021-01-05 15:48:30 640

swift和oc图片破碎效果

图片爆炸效果swift

2017-08-15

swift各种语法实例

swift语法

2017-08-07

数据库fmdb

数据库

2017-08-06

fmdb数据库封装

fmdb数据库封装

2017-08-04

iOS7searchbar

search

2017-02-21

uisearchBar

search bar

2017-02-21

image的操作

对image的各种处理

2016-09-14

设置UIButton文本和图片位置

两种方法设置UIButton文本和图片位置

2016-09-14

访qq侧滑栏

定义一个侧滑栏

2016-08-23

弹出框警告框

定义警告框,标题,内容,按钮的字体,大小,颜色,图片

2016-08-23

圆形进度条

圆形进度条

2016-08-09

自定义UISegmentedControl控件

自定义UISegmentedControl空间

2016-08-09

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

TA关注的人

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