avatar
文章
58
标签
39
分类
14

首页
iOS底层
音视频
框架分析
归档
个人项目
雷军的博客
首页
iOS底层
音视频
框架分析
归档
个人项目
狸叔资产隐私策略
发表于2021-03-03|更新于2021-03-03|关于我|狸叔资产
狸叔资产隐私策略数据的收集 数据类型 狸叔资产收集情况 备注 位置 Location精确位置 Precise Location粗略位置 Coarse Location 收集 狸叔资产会获取地理位置信息用于广告投放与反作弊。应用被用户授予地理位置权限时,狸叔资产会获取地理位置信息,用于广告定向与反作弊;当应用不获取地理位置权限时,狸叔资产不会主动获取地理位置权限及地理位置信息。 标识符 Identifiers用户ID User ID设备ID Device ID 收集 用户ID仅用于功能-奖励视频服务器端验证回调。开发者在广告请求期间向狸叔资产发送他们的用户名(基本上是一系列数字,狸叔资产不知道它与该应用内的内部用户id或内部用户名的关系。狸叔资产只接收这些数据,不检查、不验证、不存储、不使用)。当用户完全观看奖励视频时,狸叔资产将把这个用户id发送回开发者的服务器。如果开发者不使用此功能,则开发者不需要传递此类数据。设备ID当应用被用户授予广告追踪权限时,狸叔资产将获取idfa用于广告归因与追踪。 其他数据 Other Data其他数据类型 Other Data Typ ...
Git clone报The remote end hung up unexpectedly错误
发表于2021-01-26|更新于2021-03-01|iOS开发BUG记录|Git•The remote end hung up unexpectedly
Git clone报The remote end hung up unexpectedly错误错误提示 解决办法 尝试设置缓冲区上限 git config http.postBuffer 524288000 网络原因,设置一下最低速度时间 git config --global http.lowSpeedLimit 0git config --global http.lowSpeedTime 999999
第三方库推荐
发表于2021-01-26|更新于2021-03-01|iOS开发第三方库推荐|iOS框架
第三方库推荐 通知,吐司等提醒。 NotificationBanner,好看的通知控件,可以代替HUD。 PKHUD UI库 JXSegmentedView 本地数据库 WCDB, 腾讯开源本地加密数据库
RxSwift-调度者
发表于2020-12-23|更新于2021-03-01|iOS开发框架分析|iOS框架•RxSwift
RxSwift-调度者Schedulers(调度者)**是Rx**实现多线程的核心模块,它主要用于控制任务在哪个线程或队列运行。 MainScheduler: 代表主线程。 SerialDispatchQueueScheduler: 抽象了串行DispatchQueue,执行串行任务使用此scheduler。 ConcurrentDispatchQueueScheduler:**抽象了并行**DispatchQueue,执行并行任务可以使用此scheduler。 **OperationQueueScheduler:**抽象了NSOperationQueue。 常见用法Observable.of(1,2,3,4) .subscribe(on: ConcurrentDispatchQueueScheduler(qos: .userInitiated)) .observe(on: MainScheduler.instance) .subscribe(onNext: { data in print(data) }) .dispo ...
RxSwift-高阶函数
发表于2020-12-15|更新于2021-03-01|iOS开发框架分析|iOS框架•RxSwift
RxSwift-高阶函数RxSwift操作符操作符可以帮助大家创建新的序列,或者变化组合原有的序列,从而生成一个新的序列。比如filter过滤,map转换等,具体可参考文档Operator - 操作符。 filter,map等操作符都是高阶函数,高阶函数接受一个或多个函数作为输入,最后输出一个函数。下面我们就以map为例进行分析。 map原理分析先来一段最简单的map使用代码 let ob = Observable.of(1,2,3,4)ob.map { (number) -> Int in return number+2 } .subscribe{ print("\($0)") } .disposed(by: disposeBag) 查看map函数,在注释部分,可以看到,具体实现在map文件中 // Map.swiftextension ObservableType { public func map<Result>(_ transform ...
RxSwift-核心逻辑分析
发表于2020-12-09|更新于2021-03-03|iOS开发框架分析|iOS框架•RxSwift
RxSwift-核心逻辑分析基本名词解析 Observable:可监听序列,他是事件的生产者。举个例子,你可以将温度看作是一个序列,然后监测这个温度值,最后对这个值做出响应。例如:当室温高于 33 度时,打开空调降温。 Observer:观察者,是用来监听事件,然后它需要这个事件做出响应。比如监听当前室温,室温高于 33 度时,打开空调降温。打开空调降温就是观察者。 RxSwift核心逻辑分析RxSwift中,对事件的处理遵循以下三个步骤: 创建可监听序列Observable。 订阅序列,创建观察者Observer对此序列进行观察。 序列中产生事件,观察者对序列中的事件进行响应。 创建序列流程分析下面这段代码,是RxSwift的最基本使用,我们就此开始进行分析 let ob = Observable<Int>.create { (observer) -> Disposable in observer.onNext(1) return Disposables.create()} ob.subscribe { (v ...
框架分析目录汇总
发表于2020-12-09|更新于2021-03-01|iOS开发框架分析|iOS框架
框架分析目录汇总RxSwift框架分析 RxSwift-如何用协议实现一个命名空间 RxSwift-核心逻辑分析 RxSwift-高阶函数 RxSwift-调度者
RxSwift-如何用协议实现一个命名空间
发表于2020-12-08|更新于2021-03-01|iOS开发框架分析|iOS框架•RxSwift
RxSwift-如何用协议实现一个命名空间RxSwift简介RxSwift是一个函数响应式框架,使用到的是FRP(函数响应式编程)编程思想。它是通过构建函数操作数据序列,然后对这些序列做出响应的编程方式。基本的使用可以参考官方的RxSwift中文文档。 rx是什么?在RxSwift的使用过程中我们经常可以看到以下代码: cameraButton.rx.tap .bind(to: imageView.rx.image) .disposed(by: disposeBag) 其中rx具体是什么呢?我们点击进去,找到以下源码 /// A type that has reactive extensions.public protocol ReactiveCompatible: AnyObject { /// associatedtype,用来实现protocol的泛型功能 associatedtype ReactiveBase: AnyObject /// Reactive的类变量 static var rx: Reactive<Reacti ...
[iOS底层]-KVC底层原理
发表于2020-12-05|更新于2021-03-01|iOS开发iOS底层|iOS底层•KVC
[iOS底层]-KVC底层原理KVC概述KVC提供了一种可以间接访问对象属性的方式,即可以通过字符串key来访问某个属性。主要是通过NSKeyValueCoding协议实现。 KVC API介绍KVC的主要API有4个,两个设置,两个取值。 // 通过key设置值- (void)setValue:(nullable id)value forKey:(NSString *)key;- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;- // 通过key取值- (nullable id)valueForKey:(NSString *)key;- (nullable id)valueForKeyPath:(NSString *)keyPath; forKey和forKeyPath的区别是什么呢?我们通过例子感受一下 // Car 类@interface Car : NSObject@property (nonatomic, strong) NSSt ...
[iOS底层]-autoreleasepool底层原理
发表于2020-11-26|更新于2021-03-01|iOS开发iOS底层|iOS底层•autoreleasepool
[iOS底层]-autoreleasepool底层原理autoreleasepool的基本原理下载Demo,通过使用Clang编译器把OC文件编译成C++文件的学习,我们已经知道如何把OC编译成C++。接下来就把main.m编译成main.cpp,得到@autoreleasepool的C++的底层源码: int main(int argc, char * argv[]) { NSString * appDelegateClassName; /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; appDelegateClassName = NSStringFromClass(((Class (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("AppDelegate"), sel_registerName("class"))); } return UI ...
12…6
avatar
ljcoder
记录iOS开发知识
文章
58
标签
39
分类
14
Github
最新文章
狸叔资产隐私策略2021-03-03
Git clone报The remote end hung up unexpectedly错误2021-01-26
第三方库推荐2021-01-26
RxSwift-调度者2020-12-23
RxSwift-高阶函数2020-12-15
分类
  • Flutter4
  • iOS开发36
    • BUG记录9
    • UI2
    • iOS底层16
    • 多线程网络3
    • 框架分析5
    • 第三方库推荐1
  • 关于我2
  • 数据结构和算法1
  • 杂七杂八4
  • 音视频11
    • OpenGL10
    • OpenGL ES1
标签
ARM64汇编 Axure RP 9 Clang CocoaPods CupertinoActionSheet Flutter Flutter图片分辨率适配 Git KVC OpenGL OpenGL ES Photokit RxSwift SEL和IMP SVProgressHUD TestFlight TestFlight 无法接入 App Store Connect The remote end hung up unexpectedly UILabel alloc和init底层逻辑
归档
  • 三月 20211
  • 一月 20212
  • 十二月 20206
  • 十一月 20202
  • 十月 20202
  • 九月 202016
  • 八月 20206
  • 七月 20205
网站资讯
文章数目 :
58
本站访客数 :
本站总访问量 :
最后更新时间 :
©2015 - 2021 By ljcoder
框架 Hexo|主题 Butterfly