C
文章平均质量分 71
M.François
Learning code by doing more projects as many as you can.
展开
-
2020年12月 C/ObjC/Swift混合编写开发的原理/使用/注意事项
1.Swift 5.32.Xcode 12.00x00 为什么要用Swift?1.Swift是趋势,Apple推荐,关键是5.0版本的ABI语法已经成熟固定了2.支持泛型、Optional、guard、differ、类型自动推导3.相同的功能,Swift编写的代码量比ObjC要少一半,运行效率比ObjC高2.6倍4.开源、跨平台,等等0x01 开发篇问1:在ObjC代码里如何调用Swift?在.h/m文件里导入头文件,例如:ProductModuleName叫做Apple,那么头文原创 2020-10-19 11:07:52 · 570 阅读 · 0 评论 -
iOS启动优化/耗电优化
一、启动优化1.pre-main阶段我们可以通过苹果提供了XCode内建的测量方法,1.点击项目名称2.Edit scheme...3.左侧Run4.中间顶部菜单Auguments5.在Environment Variables中添加一个环境变量DYLD_PRINT_STATISTICS,并设为 1再次运行项目,会得到以下输出主要分为3个加载阶段1.加载应用的可执行文件(app自身的所有.o文件集合)2.加载动态链接器dyld(dynamic loader一个专门用来加载动态链原创 2020-08-10 13:23:21 · 626 阅读 · 1 评论 -
C语言旋转数组-转圈打印数组
// 旋转数组void rotateArray(size_t rows, size_t cols, size_t arr[4][4]) { size_t rotated[rows][cols]; for (size_t i = 0; i < rows; i++) { for (size_t j = 0; j < cols; j++) { // rotated[i][j] = a[n - j - 1][i]; // 顺时针翻转原创 2020-08-06 20:57:50 · 1051 阅读 · 0 评论 -
单链表的翻转
单链表的翻转// 链表定义struct SingleLinkedList { int value; struct SingleLinkedList *next;};// 打印链表中的数据void printAllNodes(struct SingleLinkedList *head) { printf("%d \t", head->value); if (head->next == NULL) { return; } p原创 2020-08-06 20:55:35 · 237 阅读 · 0 评论 -
二叉树的遍历/递归/非递归/翻转
二叉树的定义// 定义一个二叉树节点struct BiTreeNode { int value; struct BiTreeNode *left; struct BiTreeNode *right;};先序遍历 (递归的形式)void preOrderTraversal(struct BiTreeNode *node) { if (node != NULL) { printf("%d", node->value); // 先序遍历原创 2020-08-06 20:45:36 · 245 阅读 · 0 评论 -
Protocol Buffers的入门加实践
目录1.介绍2.下载与安装3.实例说明(Python代码)4.实例说明(Objective-C代码)5.文件.proto的解释1.介绍Protocol Buffer,简单来说,就是一种数据交换格式,就像JSON和XML作用一样,只不过Protocol Buffer是Google开源的一套二进制流网络传输协议,它独立于语言,独立于平台;而且它的性能、速度等非常优越于JSON和XML。goo原创 2017-11-04 20:02:27 · 309 阅读 · 0 评论 -
动态库的动态链接、打开、调用,使用dlopen、dlsym和dlclose
动态库的动态链接、打开、调用,使用dlopen、dlsym和dlclose 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形基本的操作方法,式加载进来,这就是所谓的插件。Unix, linux和windows都有提供加载和处理动态链接库的系统调用,非常简单;基本的操作方法动态链接库如何被加载进来?动态原创 2017-05-24 15:19:42 · 9602 阅读 · 0 评论 -
C语言的void*指针使用
#include #include //void *可以是任意类型的数据,任意类型都可以存储,也可以转换任意类型int main(){ //例1:将普通指针变量赋值给void*指针并打印输出 int pa = 100; int *p = &pa; void * v = p; printf("v=%d \n",*((int*)v)); //例2:通过void*指针修改原创 2015-08-21 14:49:03 · 2487 阅读 · 0 评论 -
C语言多级指针的使用
话不多说,直接代码,以下是多级指针,通过指针变量修改变量的值#include #include void secondPoint(int **a, float ***f, double ****d, char *****c){ **a = 100; ***f = 9.2f; ****d = 3.14; *****c =原创 2015-08-21 14:14:40 · 1993 阅读 · 0 评论 -
C语言的static和extern关键字的使用
static 1.修饰局部或者全局变量只能在当前的文件中使用 而不能在其它文件中使用 2.修饰的变量只会执行一次,并且是在所以函数执行前 3.修改的变量的值是在内存静态区开辟的空间和存储 extern 1.修饰的全局变量,表示当前变量可以在文件中使用, 也可以在不同的文件中使用 2.不原创 2015-08-21 16:08:22 · 1121 阅读 · 0 评论 -
C语言 -- 定时关机程序
C语言 -- 定时关机程序特别注意: 1.从接收到的char * 类型转换为 int ,一定不能使用(int)这种方式来转换,要用atoi() 使用方式:原型: int atoi(const char *nptr); 2.多个字符串合并,使用sprintf() 使用方式:sprintf(char *buffer,const char * format[,argum原创 2015-08-02 20:30:43 · 2151 阅读 · 1 评论 -
C语言 输出系统时间
一、输出系统时间#include #include #include typedef struct tm timeinfo;//时间的结构体int main (){ time_t rawtime; //时间类型 timeinfo *timeinfos; //时间结构体 指针变量 time(&rawtime); //获取时间的秒数,从1970年1月1日开始,存入rawtim原创 2015-07-30 18:21:54 · 5805 阅读 · 0 评论