iOS
MK_Derek
展开
-
R.swift & SwiftGen 资源使用指南
拖动当前 Run Script Phase 到 Check pods Manifest.lock 和 Compile Sources 之间。拖动当前 Run Script Phase 到 Check pods Manifest.lock 和 Compile Sources 之间。在Xcode 中 新建一个 R.generated.swift 文件 位置在 项目根目录 即 当前项目文件夹下。在项目根目录下创建 swiftgen.ym 文件。在项目根目录下创建 swiftgen.ym 文件。原创 2024-01-19 18:37:48 · 1059 阅读 · 2 评论 -
Could not find ‘rexml‘ (~> 3.2.4) - did find: [rexml-3.1.9.1] (Gem::MissingSpecVersionError)
添加到。原创 2023-10-24 18:58:05 · 480 阅读 · 0 评论 -
kCVPixelFormatType_32BGRA 格式的CMSampleBuffer sampebuffer 如何转化为 AVFrame
这是因为图像数据在内存中不一定是连续存储的,特别是当图像的宽度不是内存对齐的倍数时。为了提高内存访问性能,图像每行的末尾可能会有一些填充字节,使得每行都对齐到某个字节边界(如4字节或8字节边界)。它可能等于图像宽度乘以每像素的字节数(对于BGRA是4字节),也可能更大,取决于是否有填充字节。而是需要逐行拷贝数据,确保每行的数据都被正确地复制到AVFrame中。简而言之,逐行拷贝是为了确保正确处理任何可能存在的行填充,并确保AVFrame的数据布局与CMSampleBuffer匹配。原创 2023-09-21 15:09:41 · 329 阅读 · 0 评论 -
WebRTC 的多媒体音视频帧传输协议
创建自定义的媒体源:对于视频,你可以创建一个类,该类继承自 VideoSourceInterface。此接口提供了将视频帧输入到 WebRTC 系统的方法。对于音频,你可以创建一个类,该类继承自 AudioSourceInterface。输入数据到你的媒体源:一旦你有了自定义的媒体源,你需要有一种方法将数据(如音视频帧)输入到这些源中。你可能会从外部设备、文件、网络流或其他来源获取数据。创建自定义的接收器:对于视频,你需要实现一个与 VideoSinkInterface 相关的类。原创 2023-09-18 09:01:51 · 460 阅读 · 0 评论 -
WebRTC 如何指定 H265解码器
WebRTC 本身支持多种视频编解码器,但 H.265/HEVC 编解码器的支持主要取决于浏览器或应用的实现。不过,如果你确定你的 WebRTC 实现和对端支持 H.265,可以通过修改 SDP 来优先选择 H.265 编解码器。当你创建或接收一个 offer 或 answer 时,你将会得到一个 Session Description,也叫做 SDP (Session Description Protocol)。搜索 SDP 中与 H.265 有关的 “m=” 行。设置修改后的 SDP。原创 2023-09-12 19:43:23 · 848 阅读 · 0 评论 -
WebRTC 源码 编译 iOS端
这将为 ARM64 架构(最常用于现代 iOS 设备)编译 WebRTC。如果你需要为其他架构(如 x86_64,用于模拟器)编译,你可以通过调整。使用 git 克隆 depot_tools 并将其添加到你的 PATH 中: /path/to/depot_tools 替换为自己的路径。如果 fetch --nohooks webrtc_ios 拉取代码太多 失败可以改为 就可以了。你可以将此框架添加到你的 Xcode 项目中,并根据需要使用其 API。一旦编译完成,你会在。原创 2023-09-11 19:13:44 · 1096 阅读 · 0 评论 -
解析 WebRTC
初始化WebRTC会话:在使用WebRTC之前,需要初始化WebRTC会话,以确保WebRTC框架的正确设置和配置。初始化步骤通常包括以下内容:创建PeerConnectionFactory:通过创建PeerConnectionFactory来初始化WebRTC会话,它负责管理音视频工厂和创建PeerConnection。配置媒体约束:在创建PeerConnection时,可以设置媒体约束来指定音视频的参数,如分辨率、帧率、码率等。原创 2023-07-25 14:20:56 · 964 阅读 · 0 评论 -
Swift 中 Actor、 AnyActor 、 MainActor 、GlobalActor 异同点 和 用法
在 Swift Concurrency 中,有几个与 Actor 相关的特性和协议,包括 Actor、AnyActor、MainActor 和 GlobalActor。它们都是用于并发编程和处理异步任务的特殊类型和特性。原创 2023-07-20 16:03:41 · 674 阅读 · 0 评论 -
deinitialize 和 deallocate 区别
deinitialize() 和 deallocate() 是 Swift 中用于处理原始内存的函数,但它们有不同的作用和用途。原创 2023-07-20 17:40:41 · 138 阅读 · 0 评论 -
UnsafePointer, UnsafeMutablePointer, UnsafeBufferPointer, UnsafeMutableBufferPointer, UnsafeRawPoint
用途:UnsafeMutableRawPointer 用于以原始的字节形式访问可变内存,没有类型信息,适合用于与 C API 交互。用途:UnsafeRawPointer 用于以原始的字节形式访问内存,没有类型信息,适合用于与 C API 交互。用途:UnsafeRawBufferPointer 用于以原始的字节形式访问连续的不可变内存缓冲区。C/C++ 中对应:常规数组或指向不可变数据的指针。C/C++ 中对应:指向可变数据的数组或指针。C/C++ 中对应:指向不可变数据的指针。原创 2023-07-20 18:08:33 · 750 阅读 · 0 评论 -
网络穿透 P2P 穿透 UDP打洞、TCP打洞 原理
网络穿透 P2P 穿透 UDP打洞、TCP打洞 原理原创 2023-07-11 11:52:15 · 4118 阅读 · 0 评论 -
LLVM 的中间代码(IR) 基本语法
LLVM 的中间代码(IR) 基本语法原创 2023-03-27 15:49:19 · 2608 阅读 · 1 评论 -
Import Local Swift Package No such module TestPackage
Import Local Swift Package No such module TestPackage原创 2022-11-02 23:05:53 · 540 阅读 · 0 评论 -
bluetooth protocol stack for iOS
bluetooth protocol stack原创 2022-08-27 17:21:54 · 153 阅读 · 0 评论 -
NSObject、Class 、objc_class 、objc_objct、 isa_t
NSObject Class objc_class objc_object isa_t原创 2022-06-03 20:39:36 · 131 阅读 · 0 评论 -
UICollectionView received layout attributes for a cell with an index path that does not exist
Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘UICollectionView received layout attributes for a cell with an index path that does not exist: <NSIndexPath: 0x28223ea40> {length = 2, path = 0 - 1}’open func ins原创 2021-08-10 11:14:09 · 610 阅读 · 0 评论 -
Command MergeSwiftModule failed with a nonzero exit code (Xcode12.5.1)
error:Command MergeSwiftModule failed with a nonzero exit codeMergeSwiftModule normal arm64 (in target ‘xxxx’ from project ‘Pods’)<unknown>:0: error: circular reference<unknown>:0: note: through reference here<unknown>:0: note: throu原创 2021-07-07 16:59:07 · 1765 阅读 · 1 评论 -
Frida-ios-dump 使用
安装 Frida-ios-dumphttps://iosre.com/t/frida-ios-dump/11640brew install pythonbrew install wget安装pip:wget https://bootstrap.pypa.io/get-pip.pysudo python3 get-pip.py安装usbmuxd:brew install usbmuxdrm ~/get-pip.py安装frida for macsudo pip install原创 2021-05-15 10:43:01 · 449 阅读 · 0 评论 -
dumpdecrypted 使用
手机安装文件 openssh app file Conduit ///查看 运行程序路径ps -Adumpdecrypted.dylib 编译make 修改 make的CFLAGS = -target arm64-apple-ios8.0签名ldid -S dumpdecrypted.dylib放入路径文件中放入var/root///动态库在注入路径DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/A原创 2021-05-15 10:41:58 · 336 阅读 · 2 评论 -
dumpdecrypted.dylib: code signature in (dumpdecrypted.dylib) not valid for use in process using Libr
yld: warning: could not load inserted library 'dumpdecrypted.dylib' into hardened process because no suitable image found. Did find: dumpdecrypted.dylib: code signature in (dumpdecrypted.dylib) not valid for use in process using Library Validation: mappe原创 2021-05-14 14:33:56 · 412 阅读 · 0 评论 -
dumpdecrypted Symbol not found: ___chkstk_darwin
dyld: Symbol not found: ___chkstk_darwin Referenced from: dumpdecrypted.dylib (which was built for iOS 14.5) Expected in: /usr/lib/libSystem.B.dylib in dumpdecrypted.dylib修改 MakefileCFLAGS = -target arm64-apple-ios8.0链接原创 2021-05-14 14:31:53 · 816 阅读 · 0 评论 -
CMTimeRange start 不要单独去改变 start 而是从新赋值给 CMTimeRange
在做 视频轨道编辑的时候 使用了CMTimeRange在改变 CMTimeRange.start的时候 遇到了坑可能是自己理解错了 只改变了CMTimeRange 的start发现自己需要的TimeRange 不对 我猜测 duration是没有发生改变的 改变的只是起始时间 总的时间没有发生改变记录一下 后续使用CMTimeRange 直接 整体赋值 不单独使用 start 和 duration...原创 2021-01-12 20:28:00 · 206 阅读 · 0 评论 -
Errors were encountered while preparing your device for development. Please check the Devices
Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window解决办法:可能和TypeC 的驱动有关iphone手机关机 重启原创 2021-01-08 10:28:33 · 1586 阅读 · 0 评论 -
函数里 { } 的好处
最近在apple demo 的时候 发现 apple 的工程师 都喜欢在函数内部使用 {} 在 {} 内部做一些new 和 create 起初没有太在意 感觉是多余的今天定眼一看 发现 蛮好的 对内存的释放 起到了很好的作用code/// Initialize with the MetalKit view from which we'll obtain our Metal device- (nonnull instancetype)initWithMetalKitView:(nonnull MT原创 2020-12-04 17:44:50 · 456 阅读 · 0 评论 -
AVVideoCompositionCoreAnimationTool not work --没有显示CALayer
在视频合成的时候 设置了AVVideoCompositionCoreAnimationTool 但是在合成视频 无AnimationLayer 的显示你可以能需要更改 open var instructions: [AVVideoCompositionInstructionProtocol]public protocol AVVideoCompositionInstructionProtocol : NSObjectProtocol { /* If NO, indicates原创 2020-11-03 15:32:11 · 1039 阅读 · 0 评论 -
Invalid update: invalid number of items in section 0.
**Invalid update: invalid number of items in section 0 **在调用 insertItems 函数时 需要注意 如果当前的weakSelf.collectionView为空, 那么直接使用 reloadData如果当前collectionView不为空 才使用insertItemsopen func performBatchUpdates(_ updates: (() -> Void)?, completion: ((Bool) -> V原创 2020-10-26 11:15:15 · 2136 阅读 · 1 评论 -
Carthage Incompatible Swift version - framework was built with
Using Carthage with Xcode 12Incompatible Swift version - framework was built with xxx and the local version is xxxFalling back to building from the sourceBuild FailedTask failed with exit code 1:解决办法:Carthage 官网链接地址原创 2020-10-20 16:08:26 · 668 阅读 · 0 评论 -
JSONDecoder & Codable, Always Returning nil
参考网址 do { let datajsonObject = try jsonDecode.decode([Int64:EBORecognizedObject].self, from: datastr!) debugPrint("datajsonObject ==\(datajsonObject)") } catch { debug...原创 2020-03-16 10:57:37 · 193 阅读 · 0 评论 -
'zero' has been renamed to 'kCMTimeZero'
Swift Language Version ----> Swift5原创 2020-03-13 15:01:35 · 466 阅读 · 0 评论 -
Xcode Build "Command PhaseScriptExecution failed with a nonzero exit code"
提示 :这个方法 只适合 文件放在 Downloads 目录下 设备为Mac book pro 16 inch 的时候 其他的设备 不会包这个错误Mac book pro 16 inch Xcode 编辑 Downloads(下载) 目录下的 project(项目 报错)Command PhaseScriptExecution failed with a nonzero exit code...原创 2019-12-07 10:57:25 · 1425 阅读 · 0 评论 -
runtime 的浅解
runtime实现的机制: 运行时机制,runtime库里面包含了跟类、成员变量、方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等 1. runtime,运行时机制,它是一套C语言库 2. 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里面的结构体等数据类型,方法转成了runt原创 2016-03-24 09:40:59 · 472 阅读 · 0 评论 -
iOS copy mutableCopy 的实现
iOS copy muteblecopy原创 2016-04-06 22:30:34 · 818 阅读 · 0 评论 -
iOS KVC 键值编码
iOS kVC 键值编码原创 2016-04-07 09:14:18 · 666 阅读 · 0 评论 -
NSRunLoop 浅谈
NSRunLoop 浅谈原创 2016-03-27 22:35:24 · 492 阅读 · 0 评论 -
代码块(block)
代码块 (block)原创 2016-03-24 22:13:02 · 645 阅读 · 0 评论 -
NS_DESIGNATED_INITIALIZER 正确编写Designated Initializer的几个原则
NS_DESIGNATED_INITIALIZER 正确编写Designated Initializer的几个原则转载 2016-04-25 21:28:43 · 888 阅读 · 0 评论 -
iOS UITextField控件
iOS UITextField控件转载 2016-04-13 11:36:29 · 395 阅读 · 0 评论 -
解读HTTP与HTTPS的区别
HTTP 与HTTPS的区别原创 2016-04-10 13:23:54 · 561 阅读 · 0 评论 -
IQKeyboardManager "Done"的修改
IQKeyboardManager "Done"的修改原创 2016-04-14 11:24:54 · 5075 阅读 · 3 评论 -
IOS开发之UIView总结
IOS开发之UIView总结转载 2016-04-16 15:42:33 · 341 阅读 · 0 评论