1.类的底层实现先写一个 Person 类:@interfacePerson:NSObject@property(nonatomic,copy)NSString*p_name;@property(nonatomic,assign)intp_age;-(void)p_instanceMethod1;@end@implementationPerson-(void)p_instanceMethod1{NSLog(@"%s",__func__);}@end 使用 clang 编译器, clang-rewrite-objcPerson.m-oPerson.cpp 将 Person.m 编译成 Perso
问题描述:工作中碰到这样一种场景,WebApp已经实现了IM即时通讯及基于WebRTC实现的音视频会议,音视频聊天。也是半路接手的项目,项目整体是使用WKWebView套壳加载h5页面实现(后期过审还有很多路要走)。h5与原生交互的方案使用的javascriptCore(具体如何使用,不在本文之内)。大部分的交互工作都是可以得到解决,唯独需要调起WebRTC引擎进行音视频会议,音视频聊天时,WKWebView就无法再提供支持了。但在手机的Safari浏览器中加载的WebApp在使用音视频这块是完全支持的。所以首先想到的就是涉及到WebRTC这块的功能,我们能否放到Safari中去处理?方案探索
问题描述:工作中碰到这样一种场景,WebApp已经实现了IM即时通讯及基于WebRTC实现的音视频会议,音视频聊天。也是半路接手的项目,项目整体是使用WKWebView套壳加载h5页面实现(后期过审还有很多路要走)。h5与原生交互的方案使用的javascriptCore(具体如何使用,不在本文之内)。大部分的交互工作都是可以得到解决,唯独需要调起WebRTC引擎进行音视频会议,音视频聊天时,WKWebView就无法再提供支持了。但在手机的Safari浏览器中加载的WebApp在使用音视频这块是完全支持的。所以首先想到的就是涉及到WebRTC这块的功能,我们能否放到Safari中去处理?方案探索
TTL机制排毒,线上k8s的Job已经通过API增加了Job的TTL时长,且成功响应,为什么系统还是清理了Job?面试官:"已完成Job的TTL机制了解嘛?简单说说TTL存在的时间偏差问题?"面试官:"能简单描述一下什么是TTL-after-finished控制器嘛?"面试官:"我明明已经通过API增加了Job的TTL时长,且得到了成功的响应,为什么系统还是清理了Job?"面试官:"如何更加准确的跟踪Job完成情况?了解Finalizer追踪Job嘛?"面试官:"说说什么场景下CronJob无法被调度?"囧么肥事-胡说八道已完成Job的TTL机制了解嘛?简单说说TTL存在的时间偏差问题?完成的
TTL机制排毒,线上k8s的Job已经通过API增加了Job的TTL时长,且成功响应,为什么系统还是清理了Job?面试官:"已完成Job的TTL机制了解嘛?简单说说TTL存在的时间偏差问题?"面试官:"能简单描述一下什么是TTL-after-finished控制器嘛?"面试官:"我明明已经通过API增加了Job的TTL时长,且得到了成功的响应,为什么系统还是清理了Job?"面试官:"如何更加准确的跟踪Job完成情况?了解Finalizer追踪Job嘛?"面试官:"说说什么场景下CronJob无法被调度?"囧么肥事-胡说八道已完成Job的TTL机制了解嘛?简单说说TTL存在的时间偏差问题?完成的
获取一个随机整数范围在:[0,3)包括0,不包括3,iOS有三种实现随机数的方式:方式一:srand((unsigned)time(0));//不加这句每次产生的随机数不变inta=rand()%3;方式二:srandom(time(0));intb=random()%3;方式三:intc=arc4random()%3;分析:1、rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。2、arc4random()是一个真正的伪随机算法,不需要生成随机种子,第一次调用的时候就会自动生成。而且范围是rand()的两倍。3、精确度比
获取一个随机整数范围在:[0,3)包括0,不包括3,iOS有三种实现随机数的方式:方式一:srand((unsigned)time(0));//不加这句每次产生的随机数不变inta=rand()%3;方式二:srandom(time(0));intb=random()%3;方式三:intc=arc4random()%3;分析:1、rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。2、arc4random()是一个真正的伪随机算法,不需要生成随机种子,第一次调用的时候就会自动生成。而且范围是rand()的两倍。3、精确度比
1、Pods库用swift创建的,需要引用OC,用外部添加桥接文件TargetName-Bridging-Header.h,行不通的2、创建一个继承NSObject的public_header的OC类,把要引用的OC头文件添加到.h文件中;在.podspec文件中加入s.public_header_files='xxx/Classes/public_header.h'3、Pods组件库Classes目录下创建一个文件夹TestFolder,在文件夹中新建一个testfile.modulemap文件,并把文件内容设置成module test[system]{ header"xxxxx.h"
一、RuntimeObjective-C是一门动态性比较强的编程语言,跟C、C++等语言有着很大的不同Objective-C的动态性是由RuntimeAPI来支撑的RuntimeAPI提供的接口基本都是C语言的,源码由C\C++\汇编语言编写二、isa详解要想学习Runtime,首先要了解它底层的一些常用数据结构,比如isa指针在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta_Class对象的内存地址从arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多的信息三、objc_msgSend执行流程OC中的方法调用其实都是转换为
一、swift调用OCswift调用oc的代码,需要使用“桥接文件”,桥接文件基本上在你创建OC代码的时候会提示你创建,桥接文件里导入的是在swift代码中要使用到的OC代码。创建一个swift工程,然后再创建一个OC类。image.png此时会询问是否创建桥接文件,点击创建。桥接文件的配置路径在BuildSettings中搜索Swift。image.png只要路径正确,配置完成后,在桥接文件里引入swift代码中要使用的oc库即可。image.png需要使用的地方直接使用image.png如果桥接文件删掉了,此时创建一个header,并在BuildSettings设置好路径,然后按照上述操作