- 博客(33)
- 资源 (7)
- 收藏
- 关注
原创 iOS游戏引擎剖析
译自> O’Reilly 第2章为了解决“如何在IPHONE上创建一个游戏”这个大问题,我们需要首先解决诸如“如何显示图像”与“如何播放声音”等一系列小问题。这些问题关系到创建部分游戏引擎。就像人类的身体一样,游戏引擎的每个部分虽然不同,但是却都不可或缺。因此,首先从游戏引擎剖析开始本章。我们将会讨论一个游戏引擎的所有主要部分,包括应用程序框架、状态机、图像引擎、物理
2012-04-30 10:58:59 4455
原创 关于NSString和NSMutableString的retainCount
1. 字符串常量NSString *s = @"test";NSLog(@"s:%lx",[s retainCount]); //ffffffffffffffff(即UINT_MAX ( Maximum value an `unsigned int'))因为"test"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对s如何retain或release。 2. str
2012-04-26 15:05:10 1569
原创 objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)
今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此,以便日后查看。个人体会:obj-C中的“Class类型变量”比c#中的Object基类还要灵活,可以用它生成任何类型的实例(但是它又不是NSObject)。而选择器SEL与函
2012-04-26 14:24:43 1892
原创 objective-C 的内存管理之-引用计数
obj-c本质就是"改进过的c语言",大家都知道c语言是没有垃圾回收(GC)机制的(注:虽然obj-c2.0后来增加了GC功能,但是在iphone上不能用,因此对于iOS平台的程序员来讲,这个几乎没啥用),所以在obj-c中写程序时,对于资源的释放得由开发人员手动处理,相对要费心一些。引用计数这是一种古老但有效的内存管理方式。每个对象(特指:类的实例)内部都有一个retainCount的引
2012-04-26 14:15:23 1990
原创 代码坏味道——重构
1. Duplicated Code(重复的代码)臭味行列中首当其冲的就是Duplicated Code。如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。最单纯的Duplicated Code就是[同一个class内的两个函数含有相同表达式(expression)]。这时候你需要做的就是采用Extract Method提炼出重复的代码,然后
2012-04-23 19:39:16 2858
原创 Managing Toll-Free Bridging
在cocoa application的应用中,我们有时会使用Core Foundation(CF),我们经常会在Objective-C和CF之间进行转化。系统使用arc的状态下,编译器不能自动管理CF的内存,这时候你必须使用CFRetain和CFRelease来进行CF的内存的管理。具体的CF内存管理规则见: Memory Management Programming Guide fo
2012-04-21 00:16:23 1558
原创 Toll-Free Bridging
There are a number of data types in the Core Foundation framework and the Foundation framework that can be used interchangeably. This capability, called toll-free bridging, means that you can use th
2012-04-20 15:35:58 1424
原创 Effective Objective-C
There is a really great book more than worth reading by Joshua Bloch called Effective Java, Programming Language Guide (Pearson Education Inc, Addison-Wesley) which states in 57 items rules to good
2012-04-19 15:22:39 2240
原创 Singleton之C++部分一
采用静态或者全局变量的实现方案由于C++不能保证静态或者全局对象的构造函数的调用顺序以及析构顺序。所以如果程序中有多个用此方法实现的Singleton类,它们之间又有某种构造依赖关系和析构依赖关系,就会造成灾难性的后果。所以,只有当肯定不会有构造和析构依赖关系的情况下,这种实现才是合适的。>优点实现简单,多线程下安全>缺点如果有多个Singl
2012-04-19 15:20:04 1061
原创 NSXMLParser详解
NSXMLParser 实现的是sax方法解析xml文件。dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里。在需要的时候,查找特定节点,然后对节点进行读或写。他的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。sax的实现方法和dom不同。他只在xml文档中查找特定条件的内容,并且只提取需要的内容。这样做占用内
2012-04-19 11:02:02 1442
原创 c++多线程编程安全性简单说明
对于多线程编程,很多人概念不清,写代码的时候要么是处处加锁,影响性能不说,还容易莫名其妙的死锁,还有人对多线程敬而远之。所以学习多线程编程最重要的不是学习API,而是理解什么才是多线程安全的代码从例子说起#include windows.h>#include process.h>long global1 = 0;volatile long global2 =
2012-04-19 00:36:23 2467 3
原创 一种线程安全的单例模式实现
#include #include #include #include #include #include using namespace std;class CSingleton{private: class CAssistForSingleton { private: CRITICAL_SECTION m_cs; p
2012-04-19 00:25:47 1594
原创 iOS开发架构封装异步请求案例实现
iOS开发架构封装异步请求案例实现是本文要介绍的内容,主要是实现iOS开发中异步请求的封装案例,来看本文详细内容讲解。在找iOS开发相关的内容是,看到本文,与朋友们分享一下。论坛里看到一位兄台的问题:”异步请求能不能封装成一个公用的类?每个页面都要copy一下几个方法,感觉很麻烦“可能很多人也会有相同的问题,于是起一篇博客专门谈谈这个问题,主要想阐述一下编程思想及架构设计,权当抛砖引玉。闲话不
2012-04-17 11:18:52 2690 1
原创 Objective C--桥接模式
今天和大家分享的是桥接模式。在介绍桥接模式之前先和大家分享一个原则,那就是合成/聚合复用原则,具体定义是这样的: 合成/聚合复用原则(CAPP),尽量使用合成/聚合,尽量不要使用类继承。 合成(Composition,也有翻译成组合)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一
2012-04-17 00:18:37 3291
原创 iOS下UILocalNotification的使用
Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程。本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制
2012-04-16 21:47:35 1711 1
原创 KVC KVO KVB
KVC(Key Value Coding)KVO(Key Value Observing)KVB(Key Value Binding)KVO是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的
2012-04-12 18:15:34 3232
原创 iPhone开发之UISearchBar学习
iPhone开发之UISearchBar学习是本文要学习的内容,主要介绍了UISearchBar的使用,不多说,我们先来看详细内容。关于UISearchBar的一些问题。1、修改UISearchBar的背景颜色UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性。方法是直接将
2012-04-12 14:47:58 2147
原创 Objective-c的@property 详解
之前很多网友对我翻译的教程中的Property的使用感到有些迷惑不解,搞不清楚什么时候要release,什么时候要self.xxx = nil;同时对于Objective-c的内存管理以及cocos2d的内存管理规则不够清楚。本文主要讲解objc里面@property,它是什么,它有什么用,atomic,nonatomic,readonly,readwrite,assign,retain,copy
2012-04-12 11:53:42 1681
原创 Reachability 网络编程总结
一:确认网络环境3G/WIFI 1. 添加源文件和framework 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。 Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完成如下两部:
2012-04-09 16:38:24 1983
原创 iphone开发中的delegate 其实是桥模式
先举一个例子:假如"我"的本职工作之一是“接电话”,但"我"发现太忙了或来电太杂了,于是我聘请一位"秘书"分担我“接电话”的工作,如果电话是老板打来的,就让“秘书”将电话转接给“我”。。。那么,“我”就是A Object. “秘书”就是"我"的“Delegate”。写成代码就是 -- [我 setDelegate:秘书]; delegate的概念出现与mvc(
2012-04-09 00:34:00 3472
原创 iPhone控件自定义控件开发:重绘还是组合
iPhone开发当中处于需求经常需要一些自定义控件。当然,处于成本和质量的考虑,请优先选择系统控件。当真正需要开发自定义控件的时候,通常又会有两种选择:重绘或者组合。重绘就是重写控件的绘制函数,在该函数中绘制期望的效果。而组合就是通过不同控件的搭配形成满足需求的控件。当然,根据自定义控件需求的不一样,有的适合用重绘,有的则是适合用组合,有时则是两种实现都适用。比如星级控件是项目中比较经常用到的但是
2012-04-09 00:22:35 1795
原创 iOS 编码规范
一,格式化代码 ctrl + I◦ 指针“*”号的位置▪ 如:NSString*varName;◦ 空格 VS tabs▪ 只允许使用空格,将编辑器设置为1个TAB = 4个字符缩进◦ 每行的长度▪ 每行最多不得超过100个字符▪ 以15寸Macbook Pro的大小,每行100个字符时能最大化地同时容下编辑器和iPhone模拟器▪ Go
2012-04-08 20:55:42 4725 4
原创 iOS根据Debug和Release状态的变化来屏蔽日志输出
今天在这里分享一个很实用的小技巧。 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到NSLog调用,然后注释掉。 这样做在项目小的时候还比较有效,但随着项目规模的增长,就会变得越来越难控制。
2012-04-08 18:07:08 3608 1
原创 iOS程序基本框架
#import @interface HelloWorldViewController : UIViewController@end@implementation HelloWorldViewController//这个解释一下,用loadView这个方法的原因是因为//我们没有使用xib文件来画界面,所以用loadView方法- (void)loadView{ //创建一个UIView
2012-04-07 20:37:23 1695 3
原创 做iOS开发程序员10个必需的开发工具和资源
界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的 事。这篇文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iOS的开发。(在这里,我再闲扯一句,虽然Android的开发好像整整 XML文件界面就出来了,其明显比iOS的开发要容易很多,但是我还是觉得iOS的生命力要强过Android,看
2012-04-04 16:54:04 3420 1
原创 std::string的内存共享和Copy-On-Write技术
1、 概念 Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你
2012-04-01 21:08:12 1596
原创 使用Libxml2操作XML文档
一、Libxml2介绍: Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。二、
2012-04-01 20:39:15 1673 1
原创 libxml库解析XML文件
绪论Libxml是一个有免费许可的用于处理XML、可以轻松跨越多个平台的C语言库。Libxml实现了读、创建及操纵XML数据功能。 这个指南基于一个简单的XML应用。 数据类型Libxml 定义了许多数据类型,它隐藏了杂乱的来源以致你不必处理它除非你有特定的需要。xmlChar 替代char,使用UTF-8编码的一字节字符串。如果你的数据使用其它编码,它必须被转换到UT
2012-04-01 20:37:51 1767
原创 MAC OS X终端常用命令
苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令。显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写):显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true隐藏Mac隐藏文件的命令:defaults write com.apple.
2012-04-01 20:10:03 28167
原创 SecureCRT 常用命令
常用命令:一、ls 只列出文件名 (相当于dir,dir也可以使用)-A:列出所有文件,包含隐藏文件。-l:列表形式,包含文件的绝大部分属性。-R:递归显示。–help:此命令的帮助。二、cd 改变目录cd /:进入根目录cd :回到自己的目录(用户不同则目录也不同,root为/root,xxt为/home/xxtcd ..:回到上级目录pwd:显示当前
2012-04-01 19:36:27 2582
原创 MySQL的Insert/replace/update/delete的几个使用方法
1.Insert的几种区别标准写法的用法:(1)Insert 同时插入多条记录 Insert into tab(col1,col2,col3) values(a1,a2,a3),(b1,b2,b3),(c1,c2,c3); 对比分多次单条插入记录来说,这种写法减少了SQL分析、优化的次数,因此能减轻服务器的负担,提高插入记录效率。(2)Insert插入一
2012-04-01 16:42:53 2755
原创 mysql分表的3种方法
一,先说一下为什么要分表当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果。在这个执行过程中最花时间在什么地方呢?第一
2012-04-01 16:08:29 1606
原创 iOS应用开发——ARC
原文链接 : http://www.yifeiyang.net/development-of-the-iphone-simply-1/ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内
2012-04-01 00:23:06 1069
数据结构实验课的全部源程序
2009-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人