KVO的原理探索
概述 KVO 的全称是 Key Value Observing,俗称 键值监听,可以用于监听某个对象属性值的改变。 基本使用 使用 KVO 监听 person 对象的 age 属性改变: @interface JFPerson : NSObject @property (nonatomic, assign) int age; @end ...
概述 KVO 的全称是 Key Value Observing,俗称 键值监听,可以用于监听某个对象属性值的改变。 基本使用 使用 KVO 监听 person 对象的 age 属性改变: @interface JFPerson : NSObject @property (nonatomic, assign) int age; @end ...
isa指针 instance 的 isa 指向 class。 class 的 isa 指向 meta-class。 meta-class 的 isa 指向基类的 meta-class。 superclass指针 class 的 superclass 指向父类的 class,没有父类(NSObject就没父类)则为 nil。 meta-class 的 s...
参考源码 runtime 的源码:https://opensource.apple.com/tarballs/objc4/ 对象分类 Objective-C 对象简称 OC 对象,可以分为 3 种类型。 instance 对象:实例对象。 class 对象:类对象。 meta-class 对象:元类对象。 instance实例...
OC类转换为C++结构体 OC 代码编译过程:OC -> C/C++ -> 汇编 -> 机器代码 利用 Xcode 自带的 LLVM 编译器前端工具 clang,可以将 OC 代码转成 C++ 代码: clang -rewrite-objc main.m -o main.cpp 一般不会直接使用上面的命...
准备工作 创建一个 UE4 C++ 项目命名为 ReflectionDemo1,不包含初学者内容。然后创建一个继承自 UObject 的测试类,命名为 UStudent。 将 GENERATED_BODY() 宏改为 GENERATED_UCLASS_BODY(),然后实现构造函数: AReflectionDemo1Ga...
动画层与动画层接口 动画层和蓝图函数类似,有输入姿态和输出姿势(类似参数和返回值)。 动画层用于简化流程,避免动画图表连线混乱。把一些单独功能的姿势封装起来,输出一个姿势。使用 关联的动画图层 节点来调用指定动画层,类似...
动画曲线 动画曲线(Animation Curves)提供一种在动画播放时更改材质参数值或变形目标值的方法。 指定要修改的资源(材质或变形目标),命名曲线,然后在动画的持续时间内调整关键帧值。 动画通知 用于播放音效、一段时间的特效、动...
叠加动画 叠加动画不是最终值,而是根据叠加动画减去基础姿势计算出来的一个增量。 比如身体倾斜姿势减去一个站立姿势,得到的增量就是这个叠加动画的运动量。 参考姿势: 需要叠加的姿势: 在动画序列的附加设置里,设置 Additive...
区别 函数和事件在很多时候都可以混用。 函数可以有返回值,而事件不能有返回值。 函数可以有局部变量,而事件没有。 函数定义独占蓝图整个页面,而多个事件可以共享同一个页面。 函数中不能执行 delay、timeline 等延迟操作,而事件...
Trace Channel 射线检测通道,默认有 Visibility 和 Camera 两个通道。 可以简单理解为射线的类型/通道,也就是表示这射线是啥。 我们可以自己添加一个 Trace Channel 为 Trajectory 表示子弹弹道。在调用 LineTraceByChannel 函数进...
使用Rider编程 通过 Rider 运行项目并启动 UE4 编辑器,在修改代码后,点击 Build -> Build Startup Project:XXX 编译。这样会热重载,让 C++ 代码的修改对编辑器生效。 类命名规范 U - UObject 派生类(Actor系列除外),例如 UTe...
安装引擎注意点 注册 Epic Games 账号后,需要绑定 GitHub 账号,才能在 GitHub 上查看 Unreal Engine 引擎源码。 安装引擎时,一定要勾选 输入调试用符号,方便后续逆向学习分析: 修改默认缓存路径 在 Windows 环境,默认缓存路径...
准备数据 YOLO(You Only Look Once) 是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。 YOLO 的数据包括训练数据和验证数据,训练数据用来训练模型,验证数据用来调整模型。 无论是训练数...
Anaconda Anaconda 是用于一站式管理 Python 环境的,它可以创建一些独立的 Python 环境以便我们开发使用。 官方网站:https://www.anaconda.com/ 安装Anaconda macOS 当前最新版安装包:https://repo.anaconda.com/archive/Anaconda3...
文件结构 一个 Python 源文件的结构主要分成三个部分:头部区域、导入区域、业务代码区域。 头部区域和导入区域需要一个空行,导入区域和业务代码区域需要两个空行,这并不是语法要求,这只是强烈推荐的代码规范! # coding:utf-8 im...