自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 资源 (5)
  • 收藏
  • 关注

原创 OC内存管理

OC内存管理主要涉及到retainCount的管理内置变量可以直接赋值(assign),通常在method中把参数赋给成员变量时需要retain。alloc和new出来的对象引用系数为1,当给其它对象赋值时如果用到retain引用系数会加1,在销毁这个对象之前应该调用release使引用系数为0,每调用一次release引用系数-1;当您向一个对象发送一个autorelease,cocoa就会将对象的一个引用放入新的自动释放池当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被

2021-12-18 11:52:29 100

原创 iOS测试,奔溃分析及优化

目录1、重要性、注意点2、逻辑测试、单元测试3、性能测试、异步测试流量监控功能性能测试异步测试压力测试4、UI测试5、Crash分析Device Logs对Crash的代码拦截内存奔溃分析1、重要性、注意点通常小项目不会做单元测试,但是如果你会的话,就是锦上添花的事了。对于大公司的迭代产品主要功能类,及核心模块开发,通常是有自己的测试团队的,但是如果你每次提交代码都是没有一些很low的bug,无疑能让你信服你的能力。对于会单元测试的编程人员,通常基于接口编程,测试驱动代码,代码也会比较规范。不会的

2021-11-20 15:15:40 1788

原创 iOS测试打包和持续集成

目录单元测试1、重要性、注意点2、逻辑测试、单元测试3、性能测试、异步测试流量功能性能测试异步测试压力测试4、UI测试5、持续化集成,自动化打包上线(Shell,Jenkins)单元测试1、重要性、注意点通常小项目不会做单元测试,但是如果你会的话,就是锦上添花的事了。对于大公司的迭代产品主要功能类,及核心模块开发,通常是有自己的测试团队的,但是如果你每次提交代码都是没有一些很low的bug,无疑能让你信服你的能力。对于会单元测试的编程人员,通常基于接口编程,测试驱动代码,代码也会比较规范。不会的

2021-05-10 23:25:16 244

原创 KVC\KVO 简介

一、定义:KVC 是OC一个非正式protocol,提供一种机制来间接访问对象的属性。KVO 是基于监控键值发生变化,通知观察者,典型的观察者模式承载者,KVC实现的关键技术之一。二、常见方法代码KVC:valueForkey:、setValue:forKey:valueForKeyPath:、setValue:forKeyPath:KVO:addObserver: forKeyPath:options:、removeObserver:forKeyPath:、observseVa

2021-03-21 15:55:44 201

原创 iOS Runloop探究及应用

Runloop剖析Runloop初识Runloop是什么Runloop有什么用Runloop怎么用Runloop与线程CFRunloopNSRunloopRunloop相关类Runloop内部执行过程Runloop应用总结Runloop初识Runloop是什么程序运行过程中循环的处理事情,是个do{…}while()循环。Runloop有什么用保持程序的持续执行。处理App中的各种事件(触摸、定时器、performSelector()、线程切换处理等)节省CPU资源、提高程序性能:该做事的

2021-01-28 00:04:28 489 1

原创 iOS组件化概述

文章目录组件化逻辑为什么组件化,什么时候使用组件化组件化单元测试的好处解耦关系组件化注意问题基础组件功能组件业务组件pod的组件化集成组件化逻辑为什么组件化,什么时候使用组件化工业领域率先使用组件化,后应用到软件工程大型工程用组件化拆解,组合组件化单元测试的好处单独测试,测试完提交,提高代码质量解耦关系组件不互相影响,可以独立使用组件化注意问题基础组件分类工具...

2019-08-18 23:07:29 126

原创 CocoaPods创建本地私有库、远程私有库和公有库

创建工程git remote add origin [https://code.adress.com.git]关联远程代码拷贝远程库git clone [https://code.adress.com.git],进入拷贝工程的目录,git commit -am 'init'本地提交git log查看本地提交记录,git push提交到远程远程索引库pod repo查看远程及本地索引...

2019-08-17 22:14:01 321

原创 OC runtime 机制消除UIButton重复点击问题

什么是runtime?OC是运行时语言,OC提供了底层的一套C语言api,编译器最终都会讲OC代码转化为运行时代码。通过终端命令:clang -rewrite-objc .m可以看到便于后的.cpp(c++文件)。 调用方法本质就是利用runtime提供的objc_msgSend()发消息。runtime能做什么?可以做一些OC不容易实现的功能,比如: a\动态交换两个方法的实

2017-10-09 11:47:09 512

原创 Objective-C runtime 探究

什么是runtime? OC是运行时语言,OC提供了底层的一套C语言api,编译器最终都会讲OC代码转化为运行时代码。通过终端命令:clang -rewrite-objc .m可以看到便于后的.cpp(c++文件)。 调用方法本质就是利用runtime提供的objc_msgSend()发消息。runtime能做什么? 可以做一些OC不容易实现的功能,比如: a\动态交换两个方法的实现(特别是

2016-05-22 23:39:09 331

原创 Qt Mac下局域网文件夹共享

切换系统如果发现代码没有同步,reload一下。

2022-07-29 16:19:10 687 1

原创 二叉树,遍历

先根,中根,后根遍历

2022-07-14 20:43:09 209

原创 Shell脚本语言-数组

数组长度不存在越界,超出范围取不到

2022-07-07 18:46:24 239

原创 水仙花数_pyhon实现

输出100~999之间的水仙花数。水仙花数即各位数上数的立方和相加等于该数。用pyhon实现如下:

2022-07-05 12:43:49 95

原创 Shell脚本基本语法

Mac电脑下Bash,是Unix shell的一种,开发者通过shell脚本中间件调用系统内核,所以苹果开发者很有必要学习一下。命令:touch hello.sh#!/bin/bash#!:表示约定标记,他会告诉系统这个脚本需要什么样子的解释器来执行,既是一种脚本体现。'#'注释,注意:在Shell脚本中,没有多行注视,只有单行注释 。echo “Hello world!”命令:./hello.sh查看命令:ls -l hello.sh修改命令: chmod +x ./hello.sh-rwxr-x

2022-07-04 15:28:06 1010

原创 逻辑运算符‘&&’和‘||’优先级 ——找出数组里3个相加和最大的数

此处切忌不能写错 i >= 0 && nums[i] != nums[i-1]

2022-06-13 16:57:00 169

原创 iOS 文件管理

文章目录文件管理之NSFileManager1.创建文件夹2.创建文件3.写入文件4.读文件5.判断文件是否存在6.计算文件大小7.获取指定文件夹内所有文件8.删除文件9.移动文件文件管理之NSFileManager1.创建文件夹+(BOOL)creatDir:(NSString *)path{ if (path.length==0) { return NO; } // 初始化文件管理类 (单例) NSFileManager *fileManager =

2022-05-31 14:44:36 534

原创 沙盒中的文件目录结构及用途

Documents保存用户创建的文档文件的目录,用户可以通过文件分享分享该目录下的文件。保存应用运行时生成的需要持久化的数据,如游戏进度、涂鸦软件的绘图等信息,在iTunes和iCloud备份时会备份该目录。建议保存你希望用户看得见的文件。Library苹果不建议在该目录下保存任何用户相关数据,而是保存APP运行需要的修改数据,当然用户可以根据自己的实际需要进行保存。包含四个文件夹:Cache建议保存数据缓存使用。在用户的磁盘空间已经使用完毕时有可能删除该目录下的文件,在APP使用期间不会删除,A

2022-05-31 11:36:12 471

原创 查找链表中的中间元素

/* findMidElement *函数功能:查找链表中的中间元素 *输入:head链表头指针,p被删除元素位置 *返回值:被中间节点元素中的数据域.如果没有返回NULL */ ListNode *findMidElement(){ return findMidElement(root); } ListNode *findMidElement (ListNode *head){ if (he

2022-05-27 18:21:34 274

原创 验证链表是否有环

/* 验证链表是否有环,如:1->2->3->4->6->5 ↑———8<———│ 有返回1,否则返回0 */ int checkCircle(ListNode *head) { if (head == NULL) return 0; Node *p = head; Node *q = head->next;

2022-05-27 18:16:58 156

原创 『ios』atomic真的是线程安全吗?

什么是线程安全呢?线程安全:多线程操作共享数据不会出现想不到的结果就是线程安全的,否则,是线程不安全的。那么最后来总结下nonatomic肯定不是线程安全的atomic修饰后,我们为这个对象加了自旋锁, 不会出现多线程同时修改这个值的。至于这个值最终是什么,无法确定,是因为你不知道多线程的调用 顺序,也就无法判断最终的值是什么。 Atomic不能保证对象多线程的安全,它只是能保证你访问的时候给你返回一个完好无损的Value而已。atomic:系统生成的 getter/setter 会保 证 get、

2022-05-22 22:07:11 1044

原创 一组整数(正负数),找出相加绝对值最小的两个数,及其绝对值

void minAbsoluteValueofsum(int a[], int n){ int minSum(INT_MAX); int minus = 0; int plus = 0; for(int i =0; i<n; i++){ for(int j=i+1; j<n; j++){ int tmpSum = a[i]+a[j]; if(tmpSum > 0){

2022-05-17 11:54:42 290

原创 c++合并动态数组vector,求中位数

Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.The overall run time complexity should be O(log (m+n)).Example 1:Input: nums1 = [1,3], nums2 = [2]Output: 2.00000Explanation: merged array

2022-05-09 15:20:36 893

原创 c++泛型编程——STL 仿函数,仿函数适配器

仿函数概述仿函数和算法的关系仿函数使用办法自定义仿函数仿函数作为参数原因set元素类型需要一致才可比较改变set默认排序行为仿函数适配器not_equal_to()不能匹配vector的非0元素仿函数适配器binder1st 套接not_equal_to()### binder1st的简化binder2nd()mem_fun()调用方式调用过程mem_fun_ref()...

2022-05-07 21:46:55 171

原创 c++模板:容器list、vector

c++模板容器类型模板实例化方法(函数)模板泛型编程概述关联特性Traits迭代器iterator容器动态数组vector队列deque链表list模板是c++的特性,通过泛型实现。主要有两种表现形式:类型模板、和方法模板。类型模板实例化显示实例化,初始化告诉类型。隐示实例化,根据参数判别。方法(函数)模板参数化的一族函数(A family of function)模板会被编译两次,第一次检查语法,第二次实例化期间检查调用是否合法。模板实例化,如果需要不一样的类型,显示指定T的型别为长

2022-05-04 12:53:48 1133

转载 oc语言的优缺点有哪些

OC语言优点:1.Category是非常实用的扩展机制,可以很方便的为一个已有的类添加属性或者方法,而不需要笨拙的去继承。2.运行时多态的概念,可以让一个类的对象动态的以其他类行为去执行(OC中多了很多运行时态的机制,其中id的特殊用途,可以通过id类型的变量,调用不同类的同名函数,即使这些类没有任何关系)。3.ARC不用多讲了吧4.OC中类没有所谓的构造函数和析构函数,所以如果一个类中有其他类的数据(动态申请的),那么释放内存就不能依赖析构函数,但可以采用重写-(id) free来实现类中所有数

2022-04-25 14:32:03 724

原创 求字符串最长子串

Given a string s, find the length of the longest substring without repeating characters.Example 1:Input: s = "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3.Example 2:Input: s = "bbbbb"Output: 1Explanation: The answer i

2022-04-21 16:01:05 314

原创 c++的const和c的const的区别

c语言const常量,只能避免直接修改操作,无法避免指针地址间接操作。#include <stdio.h>void main(){ const int num = 100; //int a[num];//X *(int *)&num = 4; printf("%d",num);//4;}c++编译器会将放入数组的const变量直接替换成常量,类似#define。而如果const变量用已经赋值的变量赋值,则编译器会认为赋值的为变量,而不进行优化。#include &

2022-04-20 11:12:58 925 1

原创 亚马逊面试算法演练

function foo(items) {Calculate the max online people:Input:[[2, 5],[3, 7],[8, 9]]Output: 2 var i;一个网吧,给一个二维数组,每一个数组里有两个值,代表一个人开始上网和结束上网的时间,让计算最多同时有多少个人在上网。#include <iOStream>using namespace std;const int maxN = 100;int cnt[maxN];int mai

2022-04-15 22:44:40 379

原创 组件化终端Iterm2/terminal命令踩过的坑

基于CocoaPods的组件化原理及私有库实践终端验证私有库可能出现各种问题,首先要排除环境配置问题。比如.bash_profile是否设置了proxy(代理),系统代理是否关闭。podspec文件修改,可以再demo里先尝试pod install看文件加载、程序运行是否正常,如同:如果,长时间找不到报错原因,可以尝试一下重新安装环境。...

2022-04-15 22:06:44 202

原创 NSAutoreleasePool与内存管理

大数据处理,如高清图片的加载等,在加载过程中往往需要对加载过程中创建的内存对象进行回收利用:NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];NSMutableArray *mArray = [[NSMutableArray alloc] init];for (int index = 0; index < 10000; index++) { //栈内存,函数结束时释放(此时retainCount==-1) NS

2022-04-12 00:35:13 132

原创 代码设计原则

设计模式的六大原则有:Single Responsibility Principle:单一职责原则Open Closed Principle:开闭原则Liskov Substitution Principle:里氏替换原则Law of Demeter:迪米特法则Interface Segregation Principle:接口隔离原则Dependence Inversion Pri...

2022-04-11 23:58:40 243

原创 swift定义iOS数据库框架6——基本查询(查)

迭代器模式-查询数据)一、查询所有1、迭代器模式1.1 角色划分?1.2 遍历数据?二、条件查询-字段查询三:条件查询-"*"查询一、查询所有1、迭代器模式1.1 角色划分? 角色一:容器接口 Sequence->遍历字段->序列 角色二:具体容器 Array(大容器)->系统提供->存储多个Cursor Statement->自己封装 注意:对系统Array做了一层封装 Cursor->存储一行(字段)->小容器

2022-03-25 11:02:52 3106

原创 swift定义iOS数据库框架5——修改数据和删除数据(改)

修改数据和删除数据修改数据1、更新所有2、条件更新注意一:增加一个Bool类型注意二:条件运算符->"&&"注意三:条件运算符->"=="3、内容替换删除数据1、删除所有2、条件删除(where条件)修改数据1、更新所有 let update = users.update(email <- "[email protected]", phone <- "88888888") print(update.asSQL()) try! db.run(update)

2022-03-22 00:05:23 1731

原创 swift定义iOS数据库框架4——插入数据(增)

动态操作表插入流程非空类型1、新增一个Setter文件2、在Table中添加insert方法->QueryType中,同时添加Insert结构体3、执行SQL语句->提供run方法执行Insert语句可选类型1、在Helper中提供可选类型->扩展系统Optional2、在Setter文件中新增可选类型运算符重载,同时在Setter结构体中也需要添加构造方法重载3、给我TableBuilder添加可选类型插入流程非空类型1、新增一个Setter文件1.1 自定义运算符-&gt

2022-03-19 19:08:58 2536

原创 iOS Objective-C 面试整理

面试的好处如同考试,获得肯定或者知道不足。对于ios,object编程的一些面试题做一些整理,如下:1、notification是多线程的吗?通知是监听者模式在ios编程里的应用,ios 的通知机制,包括通知发布,通知监听,通知移除。通知的发布看书简单的接口调用,其实是cocoa为用户做了监听者模式的封装,我们运行时没有发现其阻塞我们的操作,发布通知时后台另启线程,接收时回调到主线程进行处理。2、在项目什么时候选择使用GCD,什么时候选择NSOperation?项目中使用NSOperation的优点

2022-03-18 20:07:41 544

原创 NSLog的格式输出

如下:%@ 对象%d, %i 整数%u 无符整型%f 浮点/双字%x, %X 二进制整数%o 八进制整数%zu size_t%p 指针%e 浮点/双字 (科学计算)%g 浮点/双字%s C 字符串%.*s Pascal字符串%c 字符%C unichar%lld

2022-03-18 19:44:15 273

原创 UIView与CLayer有什么区别?

答:1).UIView 是 iOS 系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由 CoreAnimation 来实现的。它真正的绘图部分,是由一个 CALayer 类来管理。 UIView 本身更像是一个 CALayer 的管理器,访问它的跟绘图和跟坐标有关的属性。2).UIView 有个重要属性 layer ,可以返回它的主 CALayer 实例。3).UIView 的 CALayer 类似 UIView 的子 View 树形结构,也可以向它的 layer 上添加子layer ,

2022-03-18 19:39:49 111

原创 cocoapods创建公有库

1、创建库,推送到远程库地址,私有库为私有地址,共有库为github共有库地址2、 pod spec create YourLibNameLib, 并修改创建的podspec文件的,summary, version, lisense, source, homepage字段3、 git tag ‘version’/ git push --tag4、$ pod trunk register [email protected] ‘yourname’ --verbose5、收邮件确认后,pod tru

2022-03-18 19:37:55 200

原创 swift定义iOS数据库框架3——创建数据表

构建者模式-动态创建表欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Ma

2022-03-15 20:01:11 3494

原创 swift定义iOS数据库框架2——分析搭建框架

文章目录动态构建表-构建者模式+解析器模式内容一:框架结构分析模式一:核心模式:构建者模式=>构建SQL模式二:辅助模式:解析器模式=>解析SQL语句(文法)内容二:框架设计实现1、一般优秀框架都会有一些注视(有助于分析框架设计)2、代码实现=>结构搭建3、代码实现=>具体实现代码动态构建表-构建者模式+解析器模式内容一:框架结构分析注意:将SQL语句转为对象方式设计,并且构建。模式一:核心模式:构建者模式=>构建SQL1、分析角色?4个角色角色一:抽象产品角

2022-03-12 14:01:29 2800

iphone开发从基础到精通

个人自学走了不少弯路,目前基本胜任开发。本代码是总结自学经验,从基础到设计模式的学习代码。希望能帮助有开发基础的你尽快入门,少走弯路。

2013-04-20

iphone SDK代码

iPhone开发教程无xib版,供初学者使用

2013-04-16

iphone瀑布流

iphone瀑布流

2012-12-19

下拉刷新tableView

下拉刷新tableView

2012-12-19

iphone demo

iOS最简单的button程序写法

2012-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除