自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 阿里的iOS协程库 coobjc 源码解析(一)——元组和协程

我最近在阅读阿里的iOS协程库,了解如何在iOS体系下实现协程上下文切换的过程。这是该系列的首篇文章,主要是了解了coobjc中的元组的实现,和coobjc中协程的上下文切换是如何进行的。

2022-06-23 23:50:47 221 1

原创 快速链接——加速编译和App启动

这篇文章主要是对 WWDC 22 的视频 Link Fast——Improve build and launch times 进行归纳总结。视频里聊到了,静态库和动态库的一些链接细节,以及 Xcode 14 为我们提供了哪些工具,来对我们的编译时长,做一些可能性的优化。......

2022-06-17 15:54:16 526

原创 TDD和BDD的单测思维

TDD和BDD的单测思维TDD和BDD是两种单测的指导思路,但是在实际生产中,我们实际上要不断地穿梭于这两种思路,才可以写出好的单元测试和好的业务代码。实际上它们的意义并不复杂,只是我们需要不断地思考和训练,才能把它们运用到不同的开发情况中。TDDTDD (Test-Driven Development) 也就是测试驱动开发。测试驱动开发让我们着重于单元测试,先有单元测试后有接口,这会让我们想着如何让我们设计的接口通过单元测试,并且实现完整的代码覆盖。通过这样的方式,我们会写出一个个逻辑尽可能单一,

2021-09-13 21:57:32 155

原创 单例猛于虎,请小心使用!

单例模式是一个在iOS里面备受使用的设计模式。但是我们在尽情使用它的时候,一定要注意到它其实也有很多隐含的问题。 其实这篇文章也相当于看了objcio上的避免滥用单例的一篇总结。 结合自己最近开发的心得,来讲一下单例的一些利与弊吧。创建方式首先单例最原始的创建方式就是static sharedInstance = nil;@implementation Singleton+ (instan

2016-10-21 11:48:28 559

原创 记2015年的腾讯校招经历——技术篇

这一篇博客主要是与状态篇形成互补。主要记下一些面试中的题目,并给出题解。 作者注:所有的题目都只给出思考方法,不给出代码。笔试:Q:给出一篇英语文章,并统计里面每个单词的出现次数。A:这题,我用OC给出了一个解法。就是用字典,中的key为单词名,value为单词出现的次数,通篇扫描一次文章,那么字典里就存了每个单词出现的次数。 这是个可行的办法,但是这样子呢,就使用了苹果的库里

2015-09-23 17:09:22 1220

原创 #import和#include的区别

#import是objective-c新增的包含头文件的办法,是#include的一个改善版,主要是防止循环包含头文件,但是现在有许多头文件都有保护措施,所以#import就看起来没那么地具有优势了。在使用方面呢,推荐#import针对objective-c头文件,#include针对c头文件。如#import<UIKit/UIKit.h>#include <mach/mach.h>#includ

2015-09-21 17:13:48 690

原创 记2015年的腾讯校招经历——状态篇

作为一个奔波在校招中的大四程序猿,我向阿里和腾讯纷纷投递了简历,阿里挂在了笔试(刚好遇上阿里裁员,当然自己笔试也没答好),而腾讯则挂在了二面,作者并非什么大牛,写下这次经历,纯属因为在腾讯的两次面试过程中,我都保持了非常好的状态——自信、积极思考、对答如流。在我看来,这已经是在我的能力下所能表现的最好的状态了,所以想藉着这场面试的余热,记下自己的心得体会,希望可以补足自己的短处,还有在下次面试的时候

2015-09-21 13:08:00 3786

原创 GeekBand·iOS--Retain Cycle(引用循环)那些事

Retain Cycle:Retain Cycle是如何形成的呢?我们知道当一个父对象(主动方)持有子对象(被动方)时,子对象会随着父对象的消亡而消亡 但是假若两个对象互为父对象呢?会如何? 对,这样子,一个retain cycle就形成了,当然,互为父对象的引用都需要是强引用。 举个简单的例子: 就比如在一般的delegate情况下,一般都是子对象将delegate设为父对象,所以为

2015-08-16 22:59:12 1863

转载 nil/Nil/NULL/NSNull的区别

平时开发过程中经常遇到这几个表示空的关键字:nil、Nil、NULL,一向搞不清楚,作为一个有两年开发经验的程序员,连那么基础的东西都不知道未免太丢人了。首先要说明的是,nil、Nil、NULL三个关键字和NSNull类都是表示空,只是用处不一样,具体的区别如下:一、NULL1、声明位置stddef.h文件2、定义#undef NULL#i

2015-04-02 23:27:36 337

转载 C++ 编译期与运行期

1)常数值在编译时就确定,变量值要到运行时才确定;2)局部变量相对于栈基址的偏移,编译时就确定,堆空间变量的相对位置也要运行时才确定;3)静态变量在用户空间的地址【虚拟地址】编译时就确定,而非静态变量运行时才确定;4)非虚函数的执行编译时就确定,而虚函数的执行运行时才确定;5)直接调用虚函数时,虚函数在虚表中的偏移(或索引)编译时就确定,而通过函数指针调用虚函数时,这个索引值运行时

2015-04-02 15:01:42 2005

转载 数组名和指针的区别

近段时间在整理自己大学几年来学习C++的点点滴滴,写这篇文章源于看林锐博士的《高质量C++指南》时,看到文章直接把指针和数组名视为同一东西,原文为“数组名本身就是一个指针,是一个指针常量,即a等价于int * const a,因此你不能试图修改数组名的值”,摘自第三版127页第7.2.1小节。    自己初学C++时也被数组和指针搞得昏头转向过,通过多方求证和对比实验已把指针和数组弄得稍明

2015-04-01 10:49:51 362

转载 Swift 的函数式编程

Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持。 Swift 提供了更多的语法和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论。Swift 概览对编程语言有了一些经验的程序员,尤其是那些对多种不同类型的编程语言都有经验的开发者, 在学习新的语言的时候更加得心应手。原因在于编程语言本身也是有各种范式的, 把握住这些特点

2015-01-08 11:58:56 797

转载 黑幕背后的__block修饰符

我们知道在Block使用中,Block内部能够读取外部局部变量的值。但我们需要改变这个变量的值时,我们需要给它附加上__block修饰符。__block另外一个比较多的使用场景是,为了避免某些情况下Block循环引用的问题,我们也可以给相应对象加上__block 修饰符。为什么不使用__block就不能在Block内部修改外部的局部变量?我们把以下代码通过 clang -r

2015-01-08 11:43:24 584 2

原创 Swift与Objective-C与C++混编的问题

看这篇文章之前,你得先确保你知道Swift如何与Objective-C混编,也知道Objective-C如何与C++混编,如果不知道,请百度一发,因为不会细讲。最近用swift写一个iOS的程序,由于有一部分的算法是用C++写的,只好去琢磨一下怎么用swift来调用C++的算法。swift调用OC是不难的,你只要在swift的工程里创建OC的文件,系统就会提问帮你生成一个bridging-

2015-01-07 20:30:15 2595 2

原创 一个奇怪的GCD内存不释放的问题

这个问题是我的同学提出来的,原帖在http://bbs.csdn.net/topics/390933411大概是这样:- (IBAction)touchToCreateThread:(id)sender { int i=10000; NSString * data; dispatch_queue_t queue = dispatch_queue_

2015-01-06 16:45:02 2084

转载 NSRunLoop概述和原理

首先讲NSRunLoop之前, 说说timer这个东西:我们把环境都设置在Cocoa中,这里所讲的timer就用NStimer,当然这里的原理适用于其他系统的timer。因为NSTimer是作为一种timerresource加入到NSRunLoop中去,在当timer的时间累计到规定时间之后就触发timer的action。从这个过程上看来timer应该是很“准时”的,而且现

2014-12-24 16:35:12 416

转载 Objective-C中的writeToFile:atomically:中atomically布尔参数的解释

我以前用其它语言写文件时没发现这样的参数(也可能是没注意),似乎这个参数为NO和YES都能写入文件看了半天才明白,这个参数意思是如果为YES则保证文件的写入原子性,就是说会先创建一个临时文件,直到文件内容写入成功再导入到目标文件里.如果为NO,则直接写入目标文件里.

2014-12-24 13:29:24 576

原创 程序、进程和线程的区别

以前一直搞不清楚这个问题,最近看了《现代操作系统》这本书,有了点深入的了解,在此记录一下。1、首先来看程序和进程:        曾经我认为这两者应该是没有什么区别的,实则不然。在这里可以引用书里的比方,假如有一个厨师要根据一个食谱做一个蛋糕,那么这个厨师就好比CPU,而食谱就是程序(以一定形式写好的算法),当然还有输入数据——面粉、糖、水等等材料,和输出结果——蛋糕,这一整个过程就是进程

2014-12-24 11:14:19 620

原创 iOS开发——子视图与父视图的Frame的关系

子视图的Frame永远是根据父视图的Frame来确定的。Frame在子视图与父视图之间存在依赖关系。如两个UIView v1,v2,v1是父视图,v2是子视图,v2的frame的原点就是父视图的左顶点,即v1.frame.origin

2014-12-22 14:50:11 875

原创 Topcoder Arena SRM 144 DIV2 1100 point 图遍历(非递归)+动态规划

Problem Statement  You work for an electric company, and the power goes out in a rather large apartment complex with a lot of irate tenants. You isolate the problem to a network of sewers

2014-11-30 23:54:40 495

原创 Top Coder Arena SRM 144 DIV 2 550point

Problem Statement    Let's say you have a binary string such as the following:011100011One way to encrypt this string is to add to each digit the sum of its adjacent digits. For example, the a

2014-11-29 20:58:00 622

原创 关于iOS中的文件打散与使用FTP上传(伪断点续传大文件)

因为最近要写一个项目,里面考虑到网络的问题,而目前

2014-11-23 16:02:20 2460

转载 最短路径kruskal算法 C++版

#include#include#include#include#includeusing namespace std;#define MAX 1000int father[MAX], son[MAX];int v, l;typedef struct Kruskal //存储边的信息{ int a; int b; int value;};bool cmp(cons

2014-06-21 19:08:49 718

转载 uint8_t是什么数据类型

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉

2014-06-21 13:31:31 1383

转载 Java中的流、字符流和字节流

一、什么是流:流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据

2014-06-11 15:27:19 312

空空如也

空空如也

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

TA关注的人

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