iOS
文章平均质量分 85
开发小猫
这个作者很懒,什么都没留下…
展开
-
静态库和动态库相关知识
iOS和静态库和动态库相关知识Symbol Type说明Uundefined(未定义)Aabsolute(绝对符号)Ttext section symbol(__TEXT.__text)Ddata section symbol(__DATA.__data)Bbss section symbol(__DATA.__bss)Ccommon symbol(只能出现在 类型的文件中)-debugger symbol tableS...原创 2022-06-06 21:46:39 · 508 阅读 · 0 评论 -
iOS 项目多环境搭建
iOS 项目多环境搭建基于Target来搭建多环境基于Target来搭建多环境的项目,本质上就是对原有Taeget进行Duplicate操作。这样会Copy一份与原有Target相同的Target Copy。此时也会生成一份copy的info.plist文件这个时候就可以针对不同的Target做差异性配置,包括AppIcon,BundleID等。缺点就是,当新创建的新文件的时候会根据需要是否加入另一个Target了。基于Build Configuration和Xcode Scheme来原创 2021-07-11 21:48:39 · 257 阅读 · 2 评论 -
Mac App项目开发总结
Mac App项目开发总结Launch Daemon守护进程详细的Launch Daemon使用文档见官方文档,这里只简单介绍一下。Launch Daemon官方文档1、Launch Daemon启动的程序拥有root用户的权限2、Launch Daemon依赖的配置文件plist需要存放在/Library/LaunchDaemons/目录下,开机会自启动配置的程序3、可以在命令行通过sudo launchctl [cmd]来操作守护进程// 详细见launchctl --help//原创 2021-05-27 21:48:26 · 1748 阅读 · 0 评论 -
iOS 项目中对OpenSSL和curl的使用
iOS 项目中对OpenSSL和curl的使用OpenSSL和curl的交叉编译OpenSSL和curl的编译采用shell脚本来编译,编译脚本是由网上找的修改版本。编译脚本下载地址使用方法:1、下载对应的源码并解压2、将对应的脚本和解压后的源码文件夹放在同一目录3、修改shell脚本中的OPENSSL_VERSION版本信息为对应的版本,或者将-v 传入对应的脚本4、开始编译./openssl-build.sh5、编译完成后会在当前目录生成对应的静态库curl是否支持ssl的判断原创 2020-06-09 22:00:51 · 1031 阅读 · 0 评论 -
LLDB插件提升开发效率
LLDB插件提升开发效率LLDB插件的的配置使用以及安装过程中遇到的问题记录!chiselfacebook提供的lldb插件chisel。Github地址利用brew安装brew install chisel配置.lldbinit文件,lldb在启动的时候会默认调用这个文件cd ~/touch .lldbinit (文件存在则忽略这一步)// 在.lldbinit加入代码,...原创 2020-03-11 22:06:46 · 747 阅读 · 0 评论 -
Moya、RxMoya基本使用
Moya、RxMoya基本使用Moya的基本使用1、首先需要定义一个接口层,定义一些需要请求的接口并配置相关的路由。import Moyaenum MyService { case getList case login(userName: String, passWord: String)}extension MyService: TargetType { ...原创 2020-03-02 20:53:33 · 2604 阅读 · 0 评论 -
Alamofire 基本结构及部分代码详解
Alamofire 基本结构及部分代码详解SessionManagerSessionManager默认由default返回一个单例对象,里面配置了默认的URLSessionConfiguration和defaultHTTPHeaders。public static let `default`: SessionManager = { let configuration = URL...原创 2019-12-30 20:46:56 · 789 阅读 · 1 评论 -
RxSwift KVO的实现原理
RxSwift KVO的实现原理RxSwift中的KVO使用是不需要自己移除观察者的,那它的底层实现原理是什么呢?案例使用person.rx.observe(String.self, "name").subscribe(onNext: { (change) in print("observe订阅到了KVO:\(String(describing: change))")}).di...原创 2019-12-10 22:47:22 · 928 阅读 · 0 评论 -
RxSwift 销毁者核心销毁流程
RxSwift 销毁者核心销毁流程在RxSwift中的代码中经常需要用disposeBag来做序列的销毁操作,那这背后的原理是怎么样工作的呢?我们根据源码来看看背后的原理。var disposeBag = DisposeBag()let ob = Observable<Any>.create { (observer) -> Disposable in observ...原创 2019-12-02 22:14:33 · 350 阅读 · 0 评论 -
RxSwift Scheduler调度环境
RxSwift Scheduler调度环境调度环境的初探DispatchQueue.global().async { self.button.rx.tap.subscribe(onNext: { () in print("订阅回调线程 \(Thread.current)") // 主线程 }).disposed(by: self.disposeBag)}上面按...原创 2019-11-28 20:22:31 · 241 阅读 · 0 评论 -
RxSwift 常用操作符及原理分析
RxSwift 常用操作符及原理分析startWithstartWith是用来在指定序列的前面发出序列的操作符Observable.of("1", "2", "3", "4").startWith("A").startWith("B").startWith("C", "a", "b").subscribe(onNext: { print($0) }).disposed(by: ...原创 2019-11-19 21:27:19 · 791 阅读 · 0 评论 -
RxSwift 核心逻辑代码分析
RxSwift 核心逻辑代码分析RxSwift的核心逻辑主要包括创建序列,订阅序列,发送事件三步,下面就来从源码的角度来查看这一系列的流程是如何工作的。// 1、创建序列let observable = Observable<String>.create { (observer) -> Disposable in // 3、 发送事件 observer.on...原创 2019-11-10 22:17:34 · 166 阅读 · 0 评论 -
AVFounction学习笔记之--AudioToolbox音频硬编码
AVFounction学习笔记之–AudioToolbox音频硬编码音频编码相关知识概念AAC是新一代音频有损压缩技术,它通过一些附加的编码技术(PS、SBR)衍生出LC-AAC、HE-AAC、HE-AAC v2三种主要的编码格式。“LC-AAC是比较传统的AAC,相对而言,其主要应用于中高码率场景的编码(≥80Kbit/s);HE-AAC(相当于AAC+SBR)主要应用于中低码率场景的编...原创 2018-11-18 22:09:38 · 1042 阅读 · 0 评论 -
AVFounction学习笔记之--VideoToolbox视频硬编码
AVFounction学习笔记之–VideoToolbox视频硬编码视频编码相关知识概念帧:每帧代表一张静态的图像GOP:GOP就是一组连续额画面,每个画面都是一帧,一个GOP就是很多帧的集合,GOP cache长度越长,画面质量越好码率:画面进行压缩后每秒显示的数据量帧率:每秒显示图片的数(人眼所看画面在16帧以上,就会认为是连贯的)分辨率:图片的长度 * 宽度,图片的尺寸压缩...原创 2018-11-05 21:53:55 · 3132 阅读 · 0 评论 -
FFmpeg编译以及如何集成到iOS项目
FFmpeg编译以及如何集成到iOS项目工具环境的准备下载FFmpeg源代码下载地址:http://www.ffmpeg.org/documentation.html下载编译需要的gas-preprocessor下载地址:https://github.com/libav/gas-preprocessor命令行安装brew install ffmpeg// 命令行合成m...原创 2018-11-26 22:18:33 · 1000 阅读 · 0 评论 -
iOS中FTP被动模式开发总结
iOS中FTP被动模式开发总结最近接手的项目中采用FTP来现实文件的上传下载,但是接手的项目中程序并不能正常的运行,于是将最近研究的问题记录一下。问题一:FTP工作模式FTP的工作模式分为主动和被动模式。简单的说,主动模式是客户端链接服务端之后,服务端使用数据端口主动链接客户端发送数据。被动模式是,客户端链接服务端后,客户端发送命令到服务端,客户端主动通过数据端口和命令端口来发送命令...原创 2019-03-12 20:54:44 · 563 阅读 · 2 评论 -
iOS企业包升级配置加Shell脚本自动处理
iOS企业包升级配置加Shell脚本自动处理企业包自动升级配置企业包自动升级配置主要需要以下几项:1、一个能访问的服务器地址2、在该地址目录下存放ipa包Plist配置文件以及应用图标等,具体见PlistPlist配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//D...原创 2019-04-22 22:58:31 · 235 阅读 · 0 评论 -
iOS OC基础知识笔记
iOS OC基础知识笔记一个NSObject对象占用多少内存?系统分配了16个字节给NSObject对象(通过malloc_size函数获得)但NSObject对象内部只使用了8个字节的空间(64bit环境下,可以通过class_getInstanceSize函数获得)#import <objc/runtime.h>#import <malloc/malloc.h&...原创 2019-05-25 22:50:47 · 1332 阅读 · 0 评论 -
Runtime 相关知识笔记
Runtime 相关知识笔记isa详解struct objc_object {private: isa_t isa;}union isa_t // arm64 架构{ Class cls; uintptr_t bits; struct { uintptr_t nonpointer : 1; // 0,代表普通的指...原创 2019-06-02 22:34:16 · 187 阅读 · 0 评论 -
iOS多线程和锁的相关笔记
iOS多线程和锁的相关笔记iOS中的常见多线程方案GCD中有2个用来执行任务的函数用同步的方式执行任务dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);queue:队列block:任务用异步的方式执行任务dispatch_async(dispatch_queue_t queue, dispatch_bl...原创 2019-06-15 20:12:08 · 430 阅读 · 0 评论 -
RunLoop 相关知识笔记
RunLoop 相关知识笔记Runloop什么是RunLoop?RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象。1、没有消息需要处理时,休眠以避免资源占用(用户态->内核态)2、有消息需要处理时,立刻被唤醒(内核态->用户态)Runloo的基本作用保持程序的持续运行处理App中的各种事件(比如触摸事件、定时器事件等)节省CPU资源,提高程...原创 2019-06-11 22:16:02 · 225 阅读 · 0 评论 -
iOS性能优化相关笔记
iOS性能优化相关笔记卡顿优化CPU1、尽量使用轻量级的对象,比如用不到事件处理的地方,可以考虑使用CALayer取代UIView2、不要频繁的调用UIView的相关属性,比如frame、bounds、transform等属性,尽量减少不必要的修改3、尽量提前计算好布局,在有需要时一次性调整对应的属性,不要多次修改属性4、Autolayout会比直接设置frame消耗更多的CPU5...原创 2019-07-08 20:16:57 · 610 阅读 · 0 评论 -
iOS内存管理相关知识笔记
iOS内存管理相关知识笔记使用CADisplayLink、NSTimer有什么注意点?CADisplayLink、NSTimer会对target产生强引用,如果target又对它们产生强引用,那么就会引发循环引用[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(task) userInfo:n...原创 2019-06-30 22:26:11 · 272 阅读 · 0 评论 -
iOS网络相关知识点
iOS网络相关知识点UI事件传递和响应UIView提供内容,负责处理触摸事件CALayer负责显示内容contents事件传递- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event// 实现...原创 2019-07-26 21:09:47 · 227 阅读 · 0 评论 -
移动开发应该了解的C++基础知识
C++ 基本语法cin coutint main(int argc, const char * argv[]) { int age; cin >> age; cout << "age is " << age << endl; return 0;}cin 用的是右移运算符 >>, count用...原创 2019-08-20 22:22:47 · 1668 阅读 · 0 评论 -
iOS网络请求参数以JSON的格式上传
iOS网络请求以JSON的格式上传在网络开发中请求方式都是以POST或者GET的方式来请求数据,在处理参数的时候都是封装在一个字典里面,然后用AFNetworking或者Alamofire框架提交服务器处理的let param = ["param1": "value1", "param2": "value2"]alamofireNetWorking("url", param: param原创 2016-07-13 20:49:24 · 5444 阅读 · 0 评论 -
AVFounction学习笔记之--音视频的编辑
AVFounction学习笔记之–音视频的编辑媒体数据的读取和写入AVAssetReaderAVAssetReader用于从AVAsset实例中读取媒体样本。通常会配置一个或多个AVAssetReaderOutput实例,并通过copyNextSampleBuffer方法访问音频样本和视频帧。它只针对带有一个资源的媒体样本。AVAssetWriterAVAssetWriter用...原创 2018-10-29 21:30:13 · 670 阅读 · 0 评论 -
AVFounction学习笔记之--媒体捕捉
AVFounction学习笔记之–媒体捕捉基础知识首先先介绍AVFounction捕捉相关的类。如下图所示1、AVCaptureSession 捕捉会话核心类2、AVCaptureDevice 捕捉设备,最常用的是音频和视频3、AVCaptureVideoPreviewLayer 视频捕捉的预览图层4、AVCaptureConnection 捕捉连接的类5、AVCaptureDe...原创 2018-10-16 21:28:19 · 484 阅读 · 0 评论 -
iOS远程私有库的创建
iOS远程私有库的创建 这几天在研究远程私有库的使用,下面就记录一下自己研究的过程,带你一步步的创建自己的私有库。工具和技能第三方代码仓库,支持私有仓库(必须是免费的,土豪略过)CocoaPods的常用操作git的常用操作创建私有库1.首先在第三方仓库中创建一个私有仓库,我选用的是”码云”,你当然也可以选择其他的。 2.利用CocoaPods创建一个库的模板文件3.将编写的库代码拷贝原创 2017-08-08 23:16:15 · 1025 阅读 · 2 评论 -
iOS10适配教程
iOS10适配教程 iOS10正式版本退出之后,项目中有许多需要适配的地方,本打算自己把遇到的问题记录一下的,但是网上很多同学都已经出了很多不错的适配教程了,自己收藏一下,也推荐给各位(站在巨人的肩膀上)。下面是几篇iOS10适配比较全面的几篇文章,推荐给大家。http://www.jianshu.com/p/9756992a35cahttp://www.jia转载 2016-09-27 23:05:50 · 291 阅读 · 0 评论 -
在Mac上安装CocoaPods以及在iOS工程中安装第三方类库
本篇文章记录自己在Mac上安装CocoaPods的方法和使用。1.首先通过命令行安装开发者工具(如果有,则跳过这一步),如果没有这一步,安装过程会出现如下问题 Could not find a valid gem 'cocoapods' (>= 0), here is why:安装开始Xcode-select --install命名执行后弹出如下提示框,按照步骤安装即可原创 2015-10-25 21:26:43 · 1030 阅读 · 0 评论 -
UICollectionView的使用
最近再次使用UICollectionView,记录一下它的简单用法,以便以后进行查阅。this class is not key value coding-compliant for the key closeLotTextField二、xib 或者 storyBoard 创建和使用UICollectionView注意:一定要注册NIb原创 2015-12-10 20:34:47 · 706 阅读 · 0 评论 -
使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程
使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程转载地址:http://swift.gg/2016/06/28/adding-siri-to-ios-10-apps-in-swift-tutorial/下载 Xcode 8,配置 iOS 10 和 Swift 3如果你还没有下载 Xcode 8 Beta 1,请到这里下载。(可选)通过命令行编译转载 2016-07-06 22:57:28 · 3907 阅读 · 0 评论 -
iOS10本地通知的探索
iOS10本地通知的探索2016WWDC会上,苹果在iOS10中更新了新的通知框架(UserNotifications.framework、UserNotificationsUI.framework),今天就去探索一下,尝尝鲜。我的探索环境采用的是Xcode8.0Beta版本,语言是Swift3.0。我会通过以前通知的使用情况和iOS10中的做出对比来介绍。Swift3.0语法变化可以参考原创 2016-07-15 17:49:15 · 1950 阅读 · 0 评论 -
收藏27个提升效率的iOS开源库
无意之间发现27个提升效率的iOS开源库,自己收藏一下,并且分享给其他朋友本文转载处:http://www.superqq.com/blog/2015/07/22/kuai-kuai-kuai-!27ge-ti-sheng-xiao-lu-de-ioskai-yuan-ku-tui-jian/1. DZNEmptyDataSetDZNEmptyDataSet算是一个很标转载 2016-02-17 14:24:25 · 1004 阅读 · 0 评论 -
记录iOS中的或者Xcode中的小技巧,小知识点
1.ARC和MRC单个文件之间的转化-fno-objc-arc ARC -> MRC-f-objc-arc MRC -> ARC2.相对路径的设置,以便在更换电脑或者文件路径之后仍可以运行项目例如PCH文件的设置 --> $(SRCROOT)/项目名称/pch文件名3.利用Xcode比较两份代码的不同之处原创 2016-02-23 16:55:07 · 633 阅读 · 0 评论 -
Runtime的简单使用
Runtime的简单使用Runtime一直都是iOS开发者讨论的比较多的问题,如果不知道一点点Runtime的使用的话,感觉都不好意思说自己是一个用OC来开发Apple应用的开发人员。虽然Runtime使用的这类博客在网上可以说是烂大街了,但是我还是想记录一下自己对Runtime的学习情况。在OC中使用Runtime需要导入#import ,而在Swift中则不需要,系统已经为我们导入原创 2016-06-01 22:26:04 · 1031 阅读 · 0 评论 -
iOS9新增关键字和一些新特性的学习
iOS9新增关键字和一些新特性的学习一、先谈谈iOS9中新增的几个关键字的学习nullable: 表示该属性的值可以为nil// 写法一@property (nonatomic, strong, nullable) NSString * name;// 写法二@property (nonatomic, strong) NSString * _Nullable name;原创 2016-05-30 17:43:48 · 478 阅读 · 0 评论 -
iOS 项目工程里面的各种图标大小
iOS 项目工程里面的各种图标大小 每次发现一个新的项目的时候都要配置LaunchImage和app的icon图标,而且每次都记不住具体的尺寸,UI妹纸每次都问,也不知到百度,今天就记录一下。一、iPhone的LaunchImage 的尺寸(全屏模式)宽 * 高640 x 1136750 x 13341242 x 2208320 x 480640 x 960...原创 2016-04-29 15:12:47 · 893 阅读 · 0 评论 -
iOS制作自己的静态库(即.a文件)
制作自己的静态库1.首先需要创建一个工程,这里制作的方式先创建的是测试工程,然后再测试工程里面制作静态库,以便一边制作一边测试。2.创建的工程中会默认创建两个和工程名字一样的.h和.m文件,如果需要还可以根据自己的需要创建其他文件3.在文件中编写自己的代码,这里我定义了一个方法,只是用于讲解制作的测试原创 2016-02-28 21:56:47 · 1367 阅读 · 0 评论