Chars's Blog

Never stop living and learning

在博主还是学生的时候,flappyBird这款游戏非常火爆,最后等到Android版的出来之后,也是很痴迷的玩了一把。可是,博主游戏天赋一直平平,几度玩得想摔手机。本文主要介绍如何开发iOS平台的flappyBird,游戏中使用了原本软件的图片资源,仅作学习交流使用。博主实现的flappyBird游戏包含游戏等级设定,排行榜,音效等功能。

Read more »

随机函数可以说是用途很广。可是,系统提供的random函数,一般符合正态分布,所以说,这是伪随机函数。甚至在一些场合是非随机函数。为了满足项目需要,必须实现均匀分布。在此,分享博主实现均匀随机函数的实现过程与方法。

Read more »

VFL(Visual Format Language),“可视化格式语言”。VFL是苹果公司为了简化autolayout的编码而推出的抽象语言。本文分享VFL的基本使用方法。

Read more »

GCD(Grand Central Dispatch),是 Apple 开发的一个多核编程的解决方法。该方法在 Mac OS X 10.6 雪豹中首次推出,并随后被引入到了 iOS4.0 中。GCD 是一个替代诸如NSThread,NSOperationQueue, NSInvocationOperation 等技术的很高效和强大的技术。文章分享关于GCD的种种概念以及使用。

Read more »

正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合。正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个”规则字符串”,这个”规则字符串”用来表达对字符串的一种过滤逻辑。文章分享关于Ruby中的正则表达式的相关知识与使用。

Read more »

单例模式的作用是解决“应用中只有一个实例”的一类问题。本文主要介绍单例模式所谓何物,以及如何实现。

Read more »

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

Read more »

1
2
3
structlist_head {
struct list_head *next, *prev;
};

一上来就放这么一个数据结构,那么,这个到底要做什么呢?没错,就如上面代码所示,本文的主角就是它,由它衍生而来的一些问题。首先自我介绍,它,来自Linux系统中的链表。

Read more »

对于Xcode而言,我们苹果开发者并不陌生,对于Xcode的插件,我们也不陌生。但是,有几个人做过Xcode插件呢?!Who care?显然,博主是关心的,这里分享一下博主自己开发插件的过程。

在平时开发过程中我们使用了很多的Xcode插件,虽然官方对于插件制作没有提供任何支持,但是加载三方的插件,默认还是被允许的。第三方的插件,存放在 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中,后缀名必须是.xcplugin ,其实际上是一种bundle。所以我们创建一个插件工程,直接创建bundle工程即可。然后通过修改后缀名为.xcplugin,将其放到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目录中即可。

Xcode插件开发现在主要通过两种方式实现,其实也就是一种,只不过其中一种是使用别人提供的开发模板来省去很多中间步骤而已。文章会依次详细介绍两种的实现方法。

Read more »

class-dump is a command-line utility for examining the Objective-C segment of Mach-O files. It generates declarations for the classes, categories and protocols. This is the same information provided by using ‘otool -ov’, but presented as normal Objective-C declarations.

上面是class-dump的官方解释,我们用的最多就是做iOS的逆向工程。class-dump,是可以把Objective-C运行时的声明的信息导出来的工具。其实就是可以导出.h文件。用class-dump可以把未经加密的app的头文件导出来。

官方网址:http://stevenygard.com/projects/class-dump/

Read more »

博主之前从事嵌入式开发,本科专业软件工程。毕业后一直从事嵌入式C语言。之所以进入嵌入式行业,完全是个人兴趣。不过,在从业两年之后发现不是自己喜欢的菜。毅然决然的转型到iOS行业。然,博主并非参加培训学校出来,完全利用工作之余时间自学,现在已经在ZAKER工作,从事ZAKER客户端的iPhone版本开发。这里,博主分享一下之前找工作时,总结的笔试题。

Read more »

Objective-C语言使用引用计数来管理内存,也就是说,每个对象都有个可以递增或递减的计数器。如果想使某个对象继续存活,那就递增其引用计数;用完了之后,就递减其计数。计数为0,就表示没人关注此对象了,于是,就可以把它销毁。在Objective-C中称之为引用计数,本文主要分享引用计数相关知识。

Read more »

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。

Read more »

这些都是小知识点,没有办法,博主自学过来的,关于一些知识并没有形成系统,这里也是博主自己的学习笔记。发现这个问题,拿出来和大家分享,有什么不足,还请指正。

从开始学的NSString *name=[[NSString alloc] init] 起,仅知道这句话是分配内存空间,一直在用,从来没考虑过它的内部是怎么实现的。今天无意中看到了这一句代码:

1
2
3
4
NSString *name = [NSString alloc];
NSLog(@"%p",name);
name = [name init];
NSLog(@"%p",name);
Read more »

这篇文章来源于开源中国的一道题目,因为答题,所以coding,所以发现了原来还有这样子的区别。因此,拿出来和大家分享。

之前在开源中国看到一个求源代码的问题:

1
2
3
4
5
6
7
8
9
模拟一个动物园系统MyZoo 

1、动物园里面有三种动物:Panda,Elephant,Kangaroo
2、三种动物都有一定的数量(不止一只)
3、动物有各自不同的食量(以天为单位的食量),并且每天都在消耗食物。
4、动物园里的食物有固定的储备,而且假设三种动物都吃这一种食物。
5、每个动物都有不同的生产周期,每当到了这种动物的生产周期,动物园就会出现一位新生宝宝(假设其食量和成年动物是一样的)。
6、在主循环里模拟动物园的运转情况,要求在控制台上输出如下内容:第几天、动物的数量、动物园饲料的余量,直到饲料不够吃为止。
7、动物的数量,食量,生产周期,饲料总量都应该是可以配置的(在同一个文件中统一配置)
Read more »

Xcode 是iOS开发者的福利,不得不说乔帮主给爱疯开发者提供了从业便利。我们这些后继者都发自内心的膜拜。也正是乔帮主的偏执,成就了苹果的伟大。Xcode 的可视化操作便捷,可是为了更灵活地debug,我们还是需要掌握一些提供效率的debug命令,文章分享迄今为止博主所知晓的debug命令,也会保持本文的持续更新。希望对大家有所帮助。

Read more »

OAuth(Open Authorization),协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名和密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户的授权,因此,OAuth是安全的。这些解释都是官方的,本文中博主会根据自己的学习所得,整理分享对OAuth协议的理解。

Read more »

对于计算机科学而言,算法是一个非常重要的概念。它是程序设计的灵魂,是将实际问题同解决该问题的计算机程序建立起联系的桥梁。文章主要介绍一些常用的算法思想。

Read more »

最近看见一些正版软件,便想到pc端软件的破解,便在网络上大肆搜索,终于找到了一个办公软件破解key的软件,对其实现非常感兴趣,想着反编译其apk,在网上也找了很多相关的实现方式,这里,本文介绍博主使用的简约方法与工具。

Read more »

在实际开发中很少会用到new,一般创建对象我们看到的全是[[className alloc] init],但是并不意味着你不会接触到new,在一些代码中还是会看到[className new],还有去面试的时候,也很可能被问到这个问题。

Read more »
0%