摘要: 在 iOS 平台上,直播技术已经很成熟,有许多强大的第三方框架可以帮助开发者轻松实现直播功能。当前主流的直播第三方框架包括但不限于: LFLiveKit:一款开源的直播推流 SDK。 PLMediaStreamingKit:由云天存提供的一站式音视频解决方案。 AliyunPlayer:阿里云提供的 阅读全文
posted @ 2024-07-16 18:31 Mr.陳 阅读(127) 评论(0) 推荐(0) 编辑
摘要: Instruments 是苹果公司提供的一款强大的分析和性能调试工具,集成在 Xcode 开发环境中。Instruments 可帮助开发者分析和优化 iOS、macOS 应用,检测性能瓶颈、内存泄漏、CPU 使用率、磁盘 I/O 等问题,从而提升应用的效率和用户体验。 以下详细介绍 Instrume 阅读全文
posted @ 2024-07-16 17:05 Mr.陳 阅读(221) 评论(0) 推荐(0) 编辑
摘要: Xcode 提供了一整套工具和功能来帮助开发者收集、分析和处理应用崩溃报告。通过这些工具,开发者可以追踪和解析崩溃日志,以更加准确和及时地修复问题。以下是详细介绍 Xcode 工具收集崩溃报告的各种方法。 一、通过设备获取崩溃报告 1. 连接设备 将 iOS 设备通过 USB 连接到您的 Mac,并 阅读全文
posted @ 2024-07-16 17:01 Mr.陳 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 正向代理和反向代理是计算机网络中两种重要的技术,它们在网络请求的传递和管理上扮演着不同的角色。下面将详细介绍这两者的概念、优缺点,并探讨它们在iOS开发中的应用。 一、正向代理 1. 概念 正向代理是一种代理服务器,客户端向代理服务器发送请求,由代理服务器转发请求到目标服务器,并将响应返回给客户端。 阅读全文
posted @ 2024-07-16 16:49 Mr.陳 阅读(79) 评论(0) 推荐(0) 编辑
摘要: iOS提供了多种方式来实现应用之间的相互跳转。其中,URL Schemes和Universal Links是两种主要的方法。下面详细介绍这两种方法,并提供相应的示例代码,同时对它们的优缺点进行分析。 一、URL Schemes 1. 什么是URL Schemes URL Schemes是一种基于UR 阅读全文
posted @ 2024-07-16 16:33 Mr.陳 阅读(86) 评论(0) 推荐(0) 编辑
摘要: iOS系统在后台执行程序时,有严格的限制,为了更好地管理资源和电池寿命,iOS会限制应用程序在后台的运行时间。然而,iOS提供了一些特定的策略和技术,使得应用程序可以在特定场景下保持后台运行(即“后台保活”)。以下是iOS中几种常见的后台保活方案,并附上示例代码: 一、后台任务 利用beginBac 阅读全文
posted @ 2024-07-16 16:27 Mr.陳 阅读(1233) 评论(0) 推荐(5) 编辑
摘要: 在iOS开发中,使用FaceID和TouchID可以为用户提供安全的生物识别认证,而手势识别(Gesture Recognition)可以增加用户交互的便利性和灵活性。下面将详细介绍这三种技术,并给出如何封装一个统一的工具类来供外部使用。 一、FaceID与TouchID 1. 设置与配置 在使用F 阅读全文
posted @ 2024-07-16 16:17 Mr.陳 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 程序员可以从以下一些论坛和社区中获益,这些平台提供了丰富的资源、交流机会以及解决技术问题的场所: Stack Overflow:这是全球最著名的程序员问答社区,你可以在这里找到各种编程语言和技术的解决方案。 GitHub Discussions:很多开源项目会在GitHub Discussions里 阅读全文
posted @ 2024-07-16 13:51 Mr.陳 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 微信小程序是一种运行在微信生态系统内的轻量级应用程序。它们无需安装、即用即走,为用户提供了便捷的使用体验。对于开发者而言,小程序开发是一种更简洁、高效的方式来触达用户。 小程序开发简介 编程语言:小程序使用的主要语言是JavaScript,以及配套的WXML(微信的HTML)和WXSS(微信的CSS 阅读全文
posted @ 2024-07-16 11:19 Mr.陳 阅读(81) 评论(0) 推荐(0) 编辑
摘要: Flutter 是由 Google 开发的一套开源 UI 软件开发工具包,能够帮助开发者使用一套代码库创建跨平台的高性能原生应用。Flutter 使用 Dart 编程语言,通过其内置的渲染引擎绘制界面,从而实现了原生性能和优秀的用户体验。 Flutter 的特点 跨平台:支持 iOS、Android 阅读全文
posted @ 2024-07-16 11:16 Mr.陳 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 创建一个Android项目是一个复杂的过程,特别是对于初学者来说。以下是详细步骤和一些容易踩坑的细节,希望能帮助你顺利创建第一个安卓项目。 安装和设置环境 安装Android Studio: 从Android Studio官网下载并安装最新版本的Android Studio。 选择与操作系统对应的安 阅读全文
posted @ 2024-07-16 11:13 Mr.陳 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 一、软件执行过程 二、寄存器与内存 通常,CPU会先将内存中的数据存储到寄存器中,然后再对寄存器中的数据进行运算 三、汇编语言的发展 汇编语言的种类 8086 、x86(32bit)、 x64(64bit) 、 ARM(嵌入式 移动设备)、...... 作为iOS开发工程师,主要的汇编语言是 AT& 阅读全文
posted @ 2024-07-16 10:13 Mr.陳 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 了解Swift的内存布局和底层原理对于编写高性能和内存高效的应用非常重要。接下来,我将更详细地介绍Swift的内存管理机制和一些底层实现细节,包括内存布局、ARC(自动引用计数)、引用类型和值类型的区别,及其在底层的实现。 内存布局(Memory Layout) 栈(Stack) 栈内存用于存储函数 阅读全文
posted @ 2024-07-16 10:11 Mr.陳 阅读(119) 评论(0) 推荐(0) 编辑
摘要: Swift的闭包(Closures)是一种将功能块和上下文整合并演示在代码中的一种手段。闭包可以捕获并存储其上下文中的变量和常量。与普遍存在于其他语言的匿名函数(如Python的lambda、JavaScript的函数表达式)类似,Swift的闭包提供了强大的功能,并在很多场景中替代了函数。 闭包有 阅读全文
posted @ 2024-07-16 10:03 Mr.陳 阅读(205) 评论(0) 推荐(0) 编辑
摘要: SwiftUI 是苹果推出的一种现代化方式,用于创建跨所有 Apple 平台的用户界面。它通过声明性语法简化了 UI 的开发流程。下面是一个基本的 SwiftUI 示例,展示了如何使用 SwiftUI 构建一个简单的 "Hello World" 应用。 示例步骤 1. 创建一个新的 SwiftUI 阅读全文
posted @ 2024-07-12 17:28 Mr.陳 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 可选项定义 可选项,一般也叫可选类型,它允许将值设置为nil 在类型名称后面加个问号? 来定义一个可选项 var name: String? = "Jack" name = nil var age: Int? // 默认就是nil age = 10 age = nil var array = [1, 阅读全文
posted @ 2024-03-01 16:47 Mr.陳 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 在 iOS 设备管理(MDM)中,成为一名合格的 MDM Vendor 是重要的一步。本文将详细介绍申请成为 MDM Vendor 的步骤,以及生成和使用相关证书的具体流程。 一、申请成为 MDM Vendor 1. 先决条件 首先,需要拥有一个 iOS Developer Enterprise P 阅读全文
posted @ 2022-03-28 19:03 Mr.陳 阅读(1900) 评论(1) 推荐(0) 编辑
摘要: 一、开发工具 Visual Studio Microsoft Visual Studio(简称VS)是微软公司提供的IDE,可以在VS上编写C、C++、C#等多种语言的项目,所写的代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Phone、Windows CE、 阅读全文
posted @ 2021-09-29 17:35 Mr.陳 阅读(4946) 评论(0) 推荐(0) 编辑
摘要: 在现代移动应用中,内购(In-App Purchase,IAP)功能扮演着非常重要的角色。然而,在实际开发与运营过程中,我们常常会遇到许多挑战和问题,比如支付校验失败、订单重复、丢单,以及越狱设备下的欺诈行为。本文将深入解析这些问题,并分享防范和优化内购的实战方法。 一、内购基本流程 要深入理解内购 阅读全文
posted @ 2021-09-28 14:24 Mr.陳 阅读(4875) 评论(0) 推荐(2) 编辑
摘要: 苹果手机使用charles抓包无法下载charles证书的问题记录: 使用:chls.pro/ssl 无效😢 使用:http://chls.pro/ssl 无效😿 使用:https://www.charlesproxy.com/assets/legacy-ssl/charles.crt 😺😺 阅读全文
posted @ 2021-09-10 11:39 Mr.陳 阅读(3810) 评论(0) 推荐(0) 编辑
摘要: 在进入职场尤其作为程序员、运维人员或其他计算机相关岗位时,面试中经常被问到的基础问题之一就是进程和线程的区别。尽管这是一个相对基础的概念,但其背后牵涉的操作系统、并发编程、线程同步和进程间通信等知识都可以让这个问题变得复杂且深入。本文将通过详细的类比和直观的解释,来帮助大家更好地理解进程和线程的概念 阅读全文
posted @ 2019-12-01 13:52 Mr.陳 阅读(575) 评论(1) 推荐(0) 编辑
摘要: 问题 今天升级 CocoaPods 到 1.8.4 版本但是随即问题就来了, 执行 pod install 下载库时,出现错误 解决 在 Podfile 加上 source ‘https://github.com/CocoaPods/Specs.git’, 就是不用新版本的 CDN 原本的 Podf 阅读全文
posted @ 2019-11-05 17:52 Mr.陳 阅读(2016) 评论(0) 推荐(0) 编辑
摘要: 基本用法 enum Direction { case north case south case east case west } enum Direction { case north, south, east, west } var dir = Direction.west dir = Dire 阅读全文
posted @ 2019-06-24 13:55 Mr.陳 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 定义 形参默认是let,也只能是let func sum(v1: Int, v2: Int) -> Int { return v1 + v2 } sum(v1: 10, v2: 20) // 无返回值 func sayHello() -> Void { print("Hello") } func s 阅读全文
posted @ 2019-06-21 16:26 Mr.陳 阅读(16) 评论(0) 推荐(0) 编辑
摘要: if-slse let age = 4 if age >= 22 { print("Get married") } else if age >= 18 { print("Being a adult") } else if age >= 7 { print("Go to school") } else 阅读全文
posted @ 2019-06-21 15:39 Mr.陳 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Hello World print("Hello World") 不用编写main函数,Swift将全局范围内的首句可执行代码作为程序入口一句代码尾部可以省略分号(;),多句代码写到同一行时必须用分号(;)隔开 用var定义变量,let定义常量,编译器能自动推断出变量\常量的类型 Playgroun 阅读全文
posted @ 2019-06-21 11:04 Mr.陳 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 在iOS应用开发中,实现点击广告跳转至淘宝商品详情页的需求,要求能在WebView中加载淘宝商品页面,并允许用户在淘宝客户端中查看商品详情和评论。为了解决这一需求,我们可以通过拦截特定URL并利用淘宝的URL Scheme来跳转至淘宝客户端。本文将详细介绍实现过程,并分析其中的细节与底层逻辑。 实现 阅读全文
posted @ 2019-06-20 15:54 Mr.陳 阅读(20821) 评论(0) 推荐(0) 编辑
摘要: 在iOS应用内购(In-App Purchase, IAP)中,确保支付过程的安全性至关重要。应用内购的核心在于验证购买收据(receipt),确保用户实际完成购买,并根据购买情况发放相应的商品。本文将详细介绍两种收据验证方法及其流程,并分析常见的攻击手段与防护策略。 两种收据验证方法 1. 客户端 阅读全文
posted @ 2019-06-06 16:23 Mr.陳 阅读(4123) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-03-19 10:55 Mr.陳 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 在iOS 10.3出现之前,App实现评价方式一般有两种: (一)deep link调用。在app 链接地址后面拼上action=write-review这种方式可以实现程序内评价; (二)App跳转。 NSURL*url=[NSURLURLWithString: @"itms-apps://itu 阅读全文
posted @ 2019-01-07 15:33 Mr.陳 阅读(1221) 评论(0) 推荐(0) 编辑
摘要: 前言 这里主要介绍一下Xcode10 版本主要更新的内容。随着iOS12的发布,Xcode10已经可以从Mac App Store下载。Xcode10包含了iOS12、watchOS 5、macOS10.14以及tvOS 12的SDK。另外,开发者可以从Xcode中看到当前Deployment Ta 阅读全文
posted @ 2018-09-25 08:49 Mr.陳 阅读(3369) 评论(0) 推荐(0) 编辑
摘要: 面试题 请问以下代码打印结果: - (void)interview01 { // 以下代码是在主线程执行的 NSLog(@"执行任务1"); dispatch_queue_t queue = dispatch_get_main_queue(); dispatch_sync(queue, ^{ NSL 阅读全文
posted @ 2018-09-04 18:00 Mr.陳 阅读(1401) 评论(0) 推荐(0) 编辑
摘要: 线程保活: 顾名思义,就是保护线程不死(保证线程处于激活状态,生命周期没有结束) 正常情况,当线程执行完一次任务之后,需要进行资源回收,也就意味着生命周期结束 应用场景: 当有一个任务,随时都有可能去执行它,那么应该放在子线程去执行,并且让子线程一直存活着,避免执行多次任务做多次创建销毁线程的动作, 阅读全文
posted @ 2018-09-04 16:08 Mr.陳 阅读(1507) 评论(0) 推荐(0) 编辑
摘要: 在多线程编程中,尤其是在iOS开发中,经常需要处理多个线程访问共享资源的情况。多个线程同时访问同一块资源(如对象、变量、文件)可能会引发数据错乱和数据安全问题。因此,解决这些问题的关键是线程同步。线程同步的目标是确保多个线程按照一定的顺序对共享资源进行访问。 一、常见的线程同步技术 1. OSSpi 阅读全文
posted @ 2018-09-04 14:12 Mr.陳 阅读(2405) 评论(1) 推荐(1) 编辑
摘要: 一、非对称加密 - RSA : + 公钥加密,私钥解密; + 私钥加密,公钥解密; + 只能通过因式分解来破解 二、对称加密 - DES - 3DES - AES (高级密码标准,美国国家安全局使用,iOS操作系统内部使用,目前还没有发现过被破解的案例) 三、哈希散列函数 (摘要算法) 1、常见算法 阅读全文
posted @ 2018-08-03 11:32 Mr.陳 阅读(968) 评论(0) 推荐(0) 编辑
摘要: 一、什么是runLoop 1、说白了,runloop就是运行循环 2、runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程。但是,对于主线程是不能退出的,因此我们需要让主线程即使任务执行完毕,也可以继续等待接收事件而不退出,那么runloop就可以做到。 但 阅读全文
posted @ 2018-08-02 13:45 Mr.陳 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 一个简单的绘图应用,模仿苹果自带软件备忘录里的涂鸦功能 核心代码 #import "DrawView.h" #import "DrawPath.h" @interface DrawView () @property (nonatomic, strong) NSMutableArray *paths; 阅读全文
posted @ 2018-06-04 17:21 Mr.陳 阅读(4352) 评论(0) 推荐(0) 编辑
摘要: 实现一个简单的抽屉效果: 核心思想:KVO实现监听mainV的frame值的变化 核心代码: #import "ViewController.h" // @"frame" #define XMGkeyPath(objc, keyPath) @(((void)objc.keyPath, #keyPat 阅读全文
posted @ 2018-06-04 14:42 Mr.陳 阅读(2170) 评论(0) 推荐(0) 编辑
摘要: 一、基本使用方法 1. 安装 FMDB 使用 CocoaPods 安装 FMDB,可以在你的 Podfile 中添加以下内容: pod 'FMDB' 然后运行 pod install 命令。 2. 导入 FMDB 在需要使用的文件中导入 FMDB: #import <FMDB/FMDB.h> 二、基 阅读全文
posted @ 2018-05-30 15:30 Mr.陳 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 我们知道遍历数组是一个相对耗时的操作,而同时手机的核是越来越多,所以我们需要充分利用iOS多核的作用. 特别是在遍历操作中还有其他耗时操作.像我们平时直接遍历数组的操作 for (NSInteger i= 0,i< 100,i++){ //do something } 这样的代码不会随着手机的不断升 阅读全文
posted @ 2017-07-12 16:06 Mr.陳 阅读(1126) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示