去除警告:warning:No previous prototype for function
inline void hexString(unsigned char *from, char *to, NSUInteger length) { for (NSUInteger i = 0; i < length; ++i) { unsigned char c = from[i]; unsigned char cHigh = c >> 4; unsigned char cLow = c & 0xf; to[2 * i] = hexChar(cHigh); to[2 * i + 1] = hexChar(cLow); } to[2 * length] [...]
动态获取一个类的所有方法
- (NSMutableSet *)methodsTokensForClass:(id)_id { Class klass = [_id class]; NSMutableSet *ms = [NSMutableSet set]; unsigned int methodListCount; Method *methodList = class_copyMethodList(klass, &methodListCount); NSUInteger i; for (i = 0; i < methodListCount; i++) { Method currMethod = (methodList[i]); NSString *mName = [NSString stringWithCString:(const char *)method_getName(currMethod) encoding:NSASCIIStringEncoding]; NSArray *mNameParts = [mName componentsSeparatedByString:@":"]; for(NSString *mNamePart in mNameParts) { [...]
分享一个好玩的写字程序能根据你输入的文字动态画出来。不过不是按照笔画写的
#import #import @interface AnimatedPathViewController : UIViewController { CALayer *_animationLayer; CAShapeLayer *_pathLayer; CALayer *_penLayer; } @property (nonatomic, retain) CALayer *animationLayer; @property (nonatomic, retain) CAShapeLayer *pathLayer; @property (nonatomic, retain) CALayer *penLayer; – (IBAction) replayButtonTapped:(id)sender; – (IBAction) drawingTypeSelectorTapped:(id)sender; //实现 #import #import #import “AnimatedPathViewController.h” @implementation AnimatedPathViewController @synthesize animationLayer = _animationLayer; @synthesize pathLayer = _pathLayer; @synthesize penLayer = _penLayer; – [...]
用perl进行base64转码,非常好用的代码
前一个帖子提到使用base64转码图片直接在浏览器里展示,文中也提供了一段使用php进行转码的代码很简练,但本人没有试用过(总是对php环境配置存在压力感)。我喜欢用perl代码段完成这类小事,下面分享两段好用的base64的encoding、decoding的代码。
本地应用里使用Data URI scheme
之前跟钟小声一起探讨过关于Data URI scheme 数据传递的问题,就是从objective-c中调用uiwebview或safari显示刚刚处理的图片。UIWebView里边采用这种Data URI scheme很合适,但是oc调用safari就比较麻烦了(url长度有限制),解决方案是自己起一个http的服务,然后传递http://localhost:[port]/[yourpage.html] ,([port]替换成相应的端口,[yourpage.html]替换成相应的页面),这个时候你怎么显示图片都很容易了。这里有一个问题http service库很庞大,实际上你不用实现完整的http service,只要写一个简单的socket监听就ok了,满足需求就好(当然这超出了本文讨论的范围,可以稍后单独发帖讨论)。 另外,今天刚好看到有人(facebook)在iPhone客户端里,使用了用html写的loading页和error页(貌似菊花动画是用css3实现的,稍后再确定)
Canvas 2D API 规范 1.0 [download]
由codeex.cn翻译的一套文档,比较详细研究Canvas 2D的同学可以收了当手册用。 本规范定义了二维 Canvas(画布)的绘画 API,使用这些 API 使得可以 在 Web 页面上进行立即模式的二维图形绘制。下载:
iphone 自定义控件,通讯录,网络,电子书,控件特效 等源码
part 1–入门: 1. xcode 版本下载 以及 iphone sdk 下载: 最新版本在此下载: http://developer.apple.com/devcenter/ios/index.action 其他版本请看 http://connect.apple.com/cgi-bin … 1.0.1.1.0.3.3.3.3.1 2. 入门教程: http://www.devdiv.com/thread-46499-1-1.html part 2–代码、例程: 1. iphone编码转换方法: http://www.devdiv.com/thread-70549-1-1.html 2. 自定义控件总结及常见页面效果: http://www.devdiv.com/thread-63456-1-1.html 3. 通过custom url scheme启动应用程序: http://www.devdiv.com/thread-30788-1-2.html 4. 歌曲剪切的代码例子 http://www.devdiv.com/thread-46712-1-1.html 5. ios电子书源码下载 http://www.devdiv.com/thread-65585-1-1.html 6. 条形码识别开源库: http://www.devdiv.com/thread-41068-1-1.html 7. iPhone 利用CG API画一个饼图(Pie chart) : http://www.devdiv.com/thread-38136-1-1.html 8. 从图片中的一点取色 http://www.devdiv.com/thread-67521-1-1.html 9. 两种自定义tabbar的方法 http://www.devdiv.com/thread-63143-1-1.html 10. cocos2d帧动画代码共享: [...]
HTML 5与CSS 3权威指南[download]
浏览了一下感觉很不错,最近很多朋友都在学Html5,分享一下
Facebook、PhoneGap、MoSync跨平台架构尿点小窥(js框架角度)
今晚研究了一下从Facebook iPhone app中搞到的bridge.js,趁热对Facebook、PhoneGap、MoSync的js框架进行一个简要的对比。首先,个人认为程序架构和设计模式的关键就是:1、需求或领域(Domain)的粒度。2、对变化点的封装–标题中的‘尿点’就是指的这2点了。另外,之所以没有在 Appcelerator 上花时间,是因为一来这玩意不开源,二来我还没有看到除了ide外其他可借鉴的东西。
推荐一个FireFox插件:Tilt 3D
新发布的FireFox 11中可以安装一个叫做“Tilt 3D”开发者工具(Add-on),这个工具非常的cool——可以将你正在浏览的网页层级像砖块儿一样立体的显示出来。 如果你想玩一玩这个工具请参照一下的步骤:安装firefox 11 –>打开firefox11 –>安装 Tilt 3D (点击可下载)–>重启firefox–>在工具栏中找到”开发者”菜单–>Tilt 3D。看看效果吧;)
visionmobile:2012年跨平台开发工具报告
visionmobile发布了2012年跨平台开发工具报告,跨平台工具(CPTs)让开发者可以以较低的增量成本针对多平台开发应用。这得以让开发者可以针对更多的平台,也打破了苹果和Google的移动生态双寡头垄断。我们的报告基于6个月的项目,包括大规模的线上开发者调研(2500位),以及深入的研究。报告访谈了超过100位工具企业。 CPTs解决了我们今天所面临的挑战,他们让开发者可以针对多个平台开发应用-通常针对移动,但也包括平板电脑或电视屏幕,在这里开发者可以使用几乎相同的基础代码或在一个设计工具内完成开发。CPTs减低了平台分化的成本,让开发者可以以较小的增量成本覆盖新平台。更重要的是,跨平台开发工具让软件企业可以定向多样的平台以复用开发者的技能、共享基础代码、同步发布和降低服务支持。
你应该尝试的5个跨平台移动开发工具
作为移动操作系统-尤其是iPhone和Android-行情风云变幻,要紧的问题还是:你的Develop RoadMap中选择支持那些设备以及准备忽略那些设备。 对整个移动开发界来说还没有一个跨操作系统平台的完美解决方案,目前许多人都选择支持一个操作系统而暂时放弃其他,如果你想一次性支持两个或三个手机操作系统,那么你必须有充足的弹药(资源)! 这里有几个我们认为不错的跨平台开发工具。 如果你知道其他的,或者如果你有关于这些框架的任何有用的提示,请让我们知道,请在这里留言给我们。(注:由于这其中大部分框架都采用了html5+native的解决方案,因此,此文归入了html5 vs. 本地app这个系列。) 下面的视频需要翻墙,不能翻墙的同学,请直接查看文字,需要进一步了解请自己搜索进一步的教程。
HTML5的移动开发实践
如果你阅读稍微涉及前端科技的博客,那么你每周都有可能看到关于HTML5的报道。虽然,这套新web标准没有强大到给你制造某个先进的家用电器,但是它的新特性的确可以帮你创建强大的应用程序,仅仅是使用html,css和javascript(当然,如果后端使用rails或者node.js的话,火力会更猛)。这篇文章主旨就是介绍关键概念及HTML5的牛逼特性,还有一些更牛逼的设置(当然是移动相关的了,牛皮吹的够大)。
白天工作型程序员 vs 夜晚工作型程序员[译]
去年我在公司内部群发过一封邮件,本文就是基于那封邮件,有细微改动。但最近有人建议我,把邮件内容发到我的博客上,让人们看看,我是对的,还是错的呢? 多年前我就相信,世界上有两种程序员,不管他们用什么技术,我称之为: 1. Day Programmers 白天工作型程序员 2. Night Programmers 夜晚工作型程序员 如今,这个行业中最常见的是白天工作型程序员,你会在很多容忍一定量的低效的公司/机构中看到他们。他们有如下特征: 1. 通常处于被领导,很少担当领导; 2. 难以应对处理复杂情况; 3. 很难想象出解决方案; 4. 不会在家打开开发工具; 5. 通常不参与技术开发社区; 6. 把编程仅当为“一份工作”;
Xcode中iOS单元测试
Xcode中集成了单元测试框架OCUnit,可以完成不同侧重点的测试。Xcode下的单元测试分为logic uint tests和application unit tests。 logic uint tests在编译阶段进行,并且只能在模拟器中进行,并且需要配置一个单独的schemes来运行。主要是针对数据层的各个模块进行测试,如果数据层的模块划分比较理想解耦相对彻底,则可以通过逻辑单元测试对各模块给出各种输入,然后对各数据模块的输出进行判断,来判断各数据模块是否正常。 application unit tests在程序运行阶段进行,可以在模拟器和真机上进行,可以在应用的schemes或者单独配置的schemes里面运行。主要是针对应用中的相对比较重要的类以及部分简单的界面操作进行测试,完成逻辑单元测试以外的检测。

近期评论