- 博客(54)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++类的构造函数与析构函数的调用顺序
构造函数顺序构造函数按此顺序执行工作: 按声明顺序调用基类和成员构造函数。 如果类派生自虚拟基类,则会将对象的虚拟基指针初始化。 如果类具有或继承了虚函数,则会将对象的虚函数指针初始化。 虚函数指针指向类中的虚函数表,确保虚函数正确地调用绑定代码。它执行自己函数体中的所有代码。
2014-10-16 20:43:33
831
原创 多图上传遇到的图片顺序问题及解决
一 问题描述多个图片上传到服务器,需要保证图片添加的顺序与最后展示的顺序一致。二 问题解决由于上传图片的时候,针对每张图都有1个上传的接口请求,每个请求依次开始,但并没有保证完成顺序。因此,根据图片文件大小的不同,请求完成的顺序可能与最开始的图片添加顺序不一致。需要针对请求图片的序号,对每一个请求返回的结果进行编号对应。然后将每个请求返回的结果,连同顺序编号一起作为一个整体元素放入一个请求结果数组。最后等所有请求完成时,从结果数组中取出元素,根据元素的顺序编号,重新进行排序。比如:图片数组为
2020-12-06 22:00:23
4972
原创 常见算法:反转单链表
单链表的反转单链表反转的思路代码易错点疑点单链表反转的思路使用3个指针,分别指示当前节点,当前节点的前一个节点,以及后一个节点。初始化前一个节点为空。当节点个数大于1时,每遍历一个节点,更新它的next指针指向前一个节点。同时更新前一个节点和后一个节点。直至当前节点指针为空,返回前一个节点的指针。代码#include <iostream>using namespace std;struct Node { int value; Node *next; Node() { }
2020-08-23 22:59:03
235
原创 大型项目模块化解耦实践
软件的高内聚,低耦合是一个成熟项目的目标,也对项目的持续发展有利。随着一个商业软件的发展和功能的丰富扩展,对应的软件项目会逐渐变得庞大,后期的维护工作之一便是模块化解耦。本文针对近期在iOS项目中的模块化解耦进行简单探讨,欢迎大家一起交流。按照 京东iOS客户端组件管理实践 这篇文章中的观点,模块化解耦的实现方式简单分为两类:代码解耦 CocoaPods管理当然这是从实现方式上来分,从项目的代
2018-01-12 23:00:11
3006
原创 iOS11 设置搜索栏取消按钮颜色
iOS11 取消按钮颜色变白的解决取消按钮所在的搜索栏背景色为白色,取消按钮之前使用setTitleColor:forState:来设置字体颜色。但是在iOS11 中,该方法失效,导致取消按钮消失不见(字体颜色与搜索栏背景色重合了)。 在网上搜索,没有发现有人遇到过类似的问题,特记录解决方案。这个是关键代码://self.searchBar为搜索栏UIButton *cancleBtn = [s
2017-10-19 15:58:50
2580
原创 UIImageView显示动态图
在网页中,可以使用gif来显示动态图。但在iOS开发中,使用gif图来替换png等静态图, 也不能使得UIImageView加载渲染出动态效果。可以使用两种方案来达到此效果。一 设置 animationImagesUIImageView *demoImgView = [[UIImageView alloc] initWithFrame:CGRectMake(250, 160, 30, 14)];N
2017-08-18 15:01:19
5647
原创 iOS UI自适应布局(小记)
简介随着iOS设备尺寸的增多,屏幕的样式增多。在复杂界面布局时,为了达到设计师的设计效果,通常得根据屏幕尺寸调整界面的位置、长宽尺寸。这时,就需要考虑使用自适应布局了。 最近在项目实践中,遇到几种自适应布局的场景,作为小记。下面的几种函数,仅供此情形: 有text内容的视图要根据内容来改变大小使用,符合此博客倡导的自适应布局的体验注意事项。一 使用sizeToFit函数考虑这样一种情况:有一
2017-07-31 21:52:57
1108
原创 函数式编程中具有普遍意义的3个基本构造单元
在函数式编程中,有3个常用的基本构造单元。分别是筛选、映射和折叠/化约。下面依次简单概述下,作为学习《函数式编程思维》一书的小小笔记。一 筛选筛选(filter)是针对列表的一种过滤操作,筛选出负荷用户自定义条件的条目,并由此产生一个新的列表。因此,新的列表的元素个数会小于等于原列表的元素个数。 可以类比:筛选类似于使用“SELECT”的 SQL语句从数据库中得到符合指定条件的数据。而函数式编程中
2017-05-31 23:10:24
656
原创 Cocoa框架-Core Location
Core Location 是用于帮助设备确定当前的位置、运动朝向及基于位置的距离、速度、方向等信息的 iOS框架。参考《精通iOS框架》做了简单的总结。 使用步骤如下...
2017-04-30 22:37:44
612
原创 GCD 多线程API编程笔记
GCD是iOS编程中实现多线程的常用API,使用方便,无须进行线程的管理,由系统代劳。同时GCD基于C实现,性能强。 在名著《Pro multithreading and memory management for iOS and OS X》(中文名:《Objective-C 高级编程 iOS与 OSX多线程和内存管理》)中,专门有章节讲解,特根据此书讲解做些笔记。
2017-04-21 23:53:46
2021
原创 O(n) 时间的算法进行分数排名
一 问题描述遇到一个常见的分数排名问题,原题的要求是: 已知一个分数数组,数组里面是取值在0-100之间的分数,记为scoreArray。要求输出对应的排名数组scoreRankArray。 算法的时间复杂度需要做到O(n)级别
2017-03-22 19:36:32
1372
原创 生成符合图片大小及长宽限制的缩略图片
iOS中,经常需要在列表显示图片的缩略图。在分享图片到微信和QQ好友时,不仅有长宽限制,而且有大小限制。 本函数使用大小缩小,JPEG压缩的方式,递归生成符合指定大小,长宽限制的UIImage缩略图。//Generate a preview image which conforms the defined size and scale limit+ (UIImage *)genPreviewIm
2017-03-15 10:51:47
1364
原创 去除字符串的首尾空格字符
在文本框中输入字符时,经常需要过滤掉首尾的空格字符,比较常用的功能,特总结分享,供查询和备用。//去掉头尾空格或换行符+ (NSString *)trimHeaderTrailSpace:(NSString *)target{ if(!target) { return @""; } NSMutableString *result = [[NSMutableS
2017-03-15 09:28:03
1706
转载 iOS locks
The presence of multiple threads in an application opens up potential issues regarding safe access to resources from multiple threads of execution. Two threads modifying the same resource might interfe
2017-03-14 23:57:30
456
转载 深入理解RunLoop[转载]
RunLoop是iOS开发中比较基础的一个问题,参考此文做了摘要总结了。基本概念• RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面 Event Loop 的逻辑。线程执行了这个函数后,就会一直处于这个函数内部 “接受消息->等待->处理” 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回。 OSX/iOS 系统中,提
2017-02-19 22:34:51
629
原创 iOS 使用GCD多线程技术来处理耗时任务
现在的iOS是默认支持多线程的,有些操作比较耗时,但这些耗时的线程不能阻塞主线程。因此需要在实现时,注意确保主线程的顺畅,及时响应用户的交互。1. 处理耗时的逻辑操作比如进行图像的压缩和裁剪等耗CPU或GPU的操作时,可以将这些操作放在全局队列中异步执行:dispatch_async(dispatch_get_global_queue(0, 0), ^{ //complex logic
2017-02-03 11:58:13
3610
原创 iOS 分享数据到其它app(open in other app)
限于iOS的沙盒机制(sandbox),不能跨app访问数据。所以想分享app A的数据到app B中使用,需要借助open in来操作。 本文介绍如何实现通过“Open In”方式来分享数据到其它app当中,以及在实现时,踩到的坑(前车之鉴)。1. 涉及的类Cocoa框架为我们提供了类UIDocumentInteractionController来实现Open In分享。2. 实现步骤简单说来,
2017-02-02 21:40:42
2173
原创 iOS中文件下载监控及处理的小结
文件下载是app中常用的一个需求场景。需要在下载过程中显示下载进度,并在下载完成时进行处理。可以使用观察者模式来进行处理。 本文包括下述三个部分: - 观察者模式简介 - 文件下载监控中的使用 - 其它注意事项一 观察者模式简介观察者模式是行为模式中的一种,观察者监听被观察者的属性等变化。它允许定义一对多的依赖关系,让多个观察者同时监听一个对象。苹果Cocoa框架中通过3种方式实现了该模式:
2017-01-30 13:13:45
1252
原创 TencentOpenAPI SDK接入与API注意事项
因项目需要,必须接入QQ分享的SDK来实现分享到手机QQ的功能。期间遇到不少坑,特写此文,愿给需要的人一点帮助。一 搭建环境下载SDK并加入工程1.1 在腾讯开放平台网站下载好SDK,解压后按照使用说明文档(下载),将TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下,注意必须放在项目主文件夹的根目录下,
2017-01-16 20:12:46
6827
原创 QQ邮箱记事本模块Lua实现小结
QQ邮箱是一个除了收邮件和发邮件的基本功能之外,具有其它一些小的办公功能的邮箱客户端。其中记事本是办公功能之一。 但是集成了记事本等小功能的邮箱,体积较大。为控制客户端体积,需要将非基本功能的一些功能模块脚本化,不编译到App当中,达到控制App体积,修复和升级方便的目的。 本文包括3个部分:原理简介优化经验教训原理简介Lua作为一门脚本语言,借助Lua脚本引擎和Lua运行库,来解释执行
2017-01-16 16:38:46
1438
原创 lua mac安装笔记 -借助homebrew3条命令安装lua
在mac上用lua的源码编译安装时,出错,提示: /Applications/Xcode.app/Contents/Developer/usr/bin/make all SYSCFLAGS=”-DLUA_USE_MACOSX” SYSLIBS=”-lreadline” CC=cc make[1]: Nothing to be done for `all’.遂寻找其它方式,搜索到一个好方法:使用h
2016-05-02 11:38:21
2716
原创 iOS的类的扩展
简介除去继承的方法之外,Objective c 为程序员提供了类别(Category)和延伸(Extension)两大扩展机制。它们可以向类中添加成员函数,实现功能上的扩展。 在添加的函数中,可以访问类中所有的数据成员,该类的子类也将继承新加的成员函数。 类别允许将一个类的实现分布在几个不同的文件中,但在文件中只允许添加成员函数,而不能添加数据成员(要添加属性的数据成员,可以用associati
2016-04-23 21:28:58
947
原创 《修改代码的艺术》 读书笔记
《修改代码的艺术》 读书笔记第16章 对代码理解不够 所以无法修改 接触不熟悉的代码,特别是遗留代码,会让我们如履薄冰。随着时间推移,一些人会对这种恐惧相对免疫。如果你理解为了修改代码而需要知道的一切,情况会好许多。那我们如何才能理解呢?一 做笔记,画草图 写下你看到的重要内容的名称,然后记录下重要内容的名称。如果看到二者之间的联系,那么就画条线。 二 列表标记 1.
2016-03-27 22:16:42
814
原创 《重构 改善既有代码的设计》学习笔记 2 -- Extract Method(提炼函数)
重构的手法中,很大一部分是对函数进行整理,使之更恰当地包装代码。问题来源: 过长函数。 这些过长的函数,往往包含太多信息,这些信息又被函数错综复杂的逻辑掩盖,不易鉴别。 解决方案: 使用Extract Method(提炼函数),把一段代码从原先函数中提取出来,封装成一个单独函数中。困难: 处理局部变量。做法: 1. 封装新
2016-02-20 21:32:19
618
原创 ios file handling
class Apple provides us two basic classes for handling file operations. They are: NSFileManager, NSFileHandlefunctions Here I want to describe the functions of them group by the class. 2.1 NSFileM
2016-02-10 21:58:52
1105
原创 《重构 改善既有代码的设计》学习笔记 1
何为重构 所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。 重构就是在代码写好之后改进它的设计。 优点改进设计 可以带来更简单,更优雅的设计降低风险 可以通过不同的途径来应付变化带来的风险,仍旧需要思考潜在的变化,仍旧需要考虑灵活的解决方案。便于维护 重构可以使系统的复杂度降低,去除不必要的设计结
2016-02-04 23:06:55
714
原创 ios编程之ReactiveCocoa框架
一 简介 ReactiveCocoa是支持函数式响应式编程(functional reactive programming)的框架,由GitHub开发参考这里的简介,官方网址为:https://github.com/ReactiveCocoa.二 优点(1) 代码更精简越少的代码,相对效率更高(2) 封装了KVO.框架将state的变化转化为signal来处理,可以方便
2016-01-31 23:16:55
515
原创 IOS中Cocoa对象的内存管理初探(简介)
在Cocoa对象的生命周期中,有创建、初始化、被使用、被持有或拷贝、被释放(release或dealloc)等过程。 与Java具有垃圾收集(GC:即Gabage Collection)的机制不同,IOS中,对象的管理需要通过对象的引用计数(Retain Count)来标识。对象的引用计数用于标识对其感兴趣的对象的书目,在使用alloc、init方法初始化对象之后,会置该对象的引用计数为1.在使用
2015-06-18 12:16:49
602
原创 一个统计指定递增方式的基础向量的个数问题
问题描述:输入一个大于等于1的整数,输出满足下面格式的基础向量:向量的最大元素值不大于n;各向量元素按照递增顺序排列,即靠后的任意元素均大于它的前面的元素。基础向量是可以通过各元素均加上某一数构成满足上述方式的基元向量问题解答:采用在基本向量后附加一个元素,求解向量个数多一的新的基元向量。#include #include using namespace std;
2015-02-28 22:40:13
673
原创 常用链表操作(1)-链表创建
链表相比较数组等线性存储结构,具有可以使用非连续存储空间的优势。同时,还有如下优点:链表的插入和删除操作不用移动元素,适合经常需要改变元素的操作。链式存储可以方便的通过指针来操作,具有双线指针的存储结构可以较快的进行数据的访问。此种情况试用于双向链表。创建链表的算法基本流程为:1 分配节点空间,使用头指针 headP指向该空间地址。若分配失败,则返回错误信息。2 存储节
2015-02-28 22:03:20
1523
原创 经典问题:全排列
问题:给定一个字符串,求出其全排列的个数。为简便起见,假定所给字符串的字符均不同,若有m个字符,则共n=m!种排列。解决方案:#include #include #include using namespace std;void swapChar(char *charA,char *charB){ char temp = *charA; *charA = *charB
2015-01-15 12:05:03
725
原创 一道阿里巴巴的面试题解答
问题描述:12个高矮不同的人,排成2排.每排必须是从矮到高排列,而且第2排比对应的第1排的人高,问:排列方式共有多少种.此题为阿里巴巴笔试题.解决方案:#include #include using namespace std;class twoQueue{public: twoQueue(int n):mMaxNum(n/2),mCount(0),mAllC
2015-01-14 19:59:40
747
原创 经典问题-老鼠走迷宫问题求解
问题:现在有一个使用二维矩阵阵列表示的迷宫,矩阵使用数字1表示道路,2表示障碍物(如墙壁)。指定迷宫入口和出口的二维坐标位置,寻找一个通过迷宫的路径。解决思路:指定前进时探索的方向顺序,比如先试探上方是否可走,按照上下左右的顺序试探前进。当碰到障碍物时,退后并切换前进顺序。直至到达终点。该方案使用穷举法寻找可行路径,不一定能找到最佳路径。代码:运
2015-01-14 15:20:59
1457
原创 基于sift特征的多图片自动拼接绪论
目标: 实现类似全景图的多图片自动拼接,各图片中的场景有相互重叠。但不限制场景之间的位置关系,以及不同场景的拍摄光照、角度等的影响。主要技术: 1 sift特征 2 特征匹配查找算法:K-d tree和BBF(Best bin first search)算法 3 基于 RANSAC的特征点筛选 4 图像融合,根据匹配确定重叠区域
2015-01-10 21:06:22
660
转载 网易笔试题-九宫格密码
一 问题描述:九宫格,就是手机手势密码。有三问,一问是如果只设置2位密码,有多少种满足的密码,密码不能穿越,比如1 3之间穿过2,这是不允许的;第二问,如果变成N*M格,判断一个2位密码是否是满足要求的密码(要求同1),第三问,如果设置密码位数为9位,有多少种合适的密码,给出算法思路,并给出伪代码。
2014-11-09 17:33:06
1359
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人