唐巧的博客

唐巧的博客

记录下自己学习的点滴

iPhone开发常问的十个问题(2012年3月版)

前言

今天去stackoverflow.com上看了一下iPhone标签下排名最高的10个问题,将它们整理出来,希望这些常见问题能帮到一些iPhone开发的初学者。本来想把答案也翻译过来的,后来发现答案资料通常都比较复杂,翻译起来太麻烦。所以大家还是看英文的答案吧,我只顺带用中文总结一下答案。

Xcode4 使用技巧

使用 xcode4 也有一段时间了,今天整理了一下 xcode4 的一些使用技巧,在这里分享给大家。

用Git进行协同开发

问题场景描述

常常会遇到这样的协同场景:后台的同事和前端的同事需要共同开发一个新功能,而他们的代码相互依赖,所以需要不停地更新各自的代码进行联调。

对于这种场景,最简单的方式就是,这 2 个同事坐到一起,然后把 svn 当作一个共享代码的中转站来共享开发中的代码。

在这种方式下,大家各自写自己的代码,提交到 svn 上,然后用 svn up 获得对方的代码。在调试问题的时候,大家可能不停地更新代码,然后让对方用 svn up 来更新。最终,虽然开发能够顺利进行,但是 svn 上会积累大量调试中的代码历史。所以,这样把 svn 当作代码中转站是一个很山寨的行为。

在开发 有道云笔记 新的 iPad 版 时,我和前端同事 zyc 尝试用 git 进行了协同开发。在这里把具体方案分享给大家,欢迎大家讨论。

使用GCD

什么是 GCD

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

GCD 和 block 的配合使用,可以方便地进行多线程编程。

给iOS工程增加Daily Build

前言

Daily Build 是一件非常有意义的事情,也是敏捷开发中关于 “持续集成” 的一个实践。Daily Build 对于开发来说有如下好处:

  • 保证了每次 check in 的代码可用,不会造成整个工程编译失败。
  • 进度跟进。产品经理可以每天看到最新的开发进度,并且试用产品,调整一些细节。很多时候,一个新功能,你真正用了一下才能有体会好或不好,所以 daily build 也给产品经理更多时间来调理他的设计。
  • 需求确认。产品经理可以确认开发的功能细节是他的预期。因为我们的开发比较紧凑,所以都没有传统的需求说明文档,所以 daily build 也给产品经理用于尽早确认开发的功能细节是他的预期,我就遇到一次产品经理发现开发出的一个功能细节和他的预期不一致,但是因为有 daily build,使得我可以尽早做修改,把修改的代价减小了。
  • 测试跟进。如果功能点是独立的话,测试同事完全可以根据 daily build 来进行一些早期的测试。越早的 Bug 反馈可以使得修改 bug 所需的时间越短。
给NSString增加Java风格的方法

我实在受不了 NSString 冗长的方法调用了,每次写之前都要查文档。特别是那个去掉前后多余的空格的方法,长得离谱。与之对应的别的语言,拿 java 来说,对应的方法名叫 trim。拿 python 来说,对应的方法名叫 strip。但是 Objective-C 呢?是下面这段:

[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
象写程序一样写博客:搭建基于github的博客

2016.02.16 更新说明

本博客已经由 octopress 迁移到了 hexo,本文章的内容稍显陈旧。

前言

github 真是无所不能。其 Pages 功能 支持上传 html,并且在页面中显示。于是有好事者做了一个基于 github 的博客管理工具:octopress,基本原理是用 git 来管理你的文章,然后最终发布到 github 上成为一个独立博客站点。由于 github 支持 CNAME 域名指向,所以如果有独立域名的话,可以基于这些做出一个专业的博客站点出来。

本博客就是完全基于此搭建起来的,在使用了 2 个月之后,我将原系统根据中国人的需求做了一些配置,去掉了 GFW 会挡住的 google font api,以及替换掉了速度超慢的国外的评论系统,也加上了分享到国内的微博的功能。现在把这些都总结出来,希望大家都可以方便地搭建基于 github 的博客来。

iOS5中UIViewController的新方法

前言

在苹果的 WWDC2011 大会视频的
《Session 101 - What’s New in Cocoa》
《Session 102 - Implementing UIViewController Containment》 中介绍了苹果在 iOS5 中给 UIViewController 新增加的 5 方法以及一个属性:

// 方法
addChildViewController:
removeFromParentViewController:
transitionFromViewController:toViewController:duration:options:animations:completion:
willMoveToParentViewController:
didMoveToParentViewController:
// 属性
@property(nonatomic,readonly) NSArray *childViewControllers
斯坦福大学 iOS 开发公开课总结

前言

iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 “iPhone 开发公开课 “ 了。此公开课在以前叫做《iPhone 开发教程》,今年由于平板电脑的流行,所以也加入了 ipad 开发相关的课程。在 网易公开课 上,有 该教程 的 2010 年录象,并且前面 15 集带中文字幕文件,非常适合初学者学习。

使用 Git 来管理 Xcode 中的代码片段

代码片段介绍

xcode4 引入了一个新 feature: code snippets,在整个界面的右下角,可以通过快捷键:cmd + ctrl + opt + 2 调出来。code snippets 是一些代码的模版,对于一些常见的编程模式,xcode 都将这些代码抽象成模版放到 code snippet 中,使用的时候,只需要键入快捷键,就可以把模版的内容填到代码中。

Git 的使用感受

从开始工作到现在,在公司里面一直用 svn 来做版本管理。大约半年前听说了 Git,因为 Git 的光辉相当耀眼,作者是 Linus Torvalds,被大量的开源软件采用,如 jQuery, Perl, Qt, ROR, YUI, GNOME 等,所以决定学一学。
比较庆幸的是,国内有一本较好的介绍 Git 的书:《Git 权威指南》
我大概花了一个月的周末时间来学习它。在这里总结一下使用 Git 的感受,主要是和 SVN 来做一些比较,以便突出 Git 的特点。

使用Objective-C的文档生成工具:appledoc

前言

做项目的人多了,就需要文档了。今天开始尝试写一些项目文档。但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手。象 Java 语言本身就自带 javadoc 命令,可以从源码中抽取文档。今天抽空调研了一下 objective-c 语言的类似工具。

用javascript协助导入图片

需求

先说说需求。春节回家见爸妈,老爸迷上了摄影。他把平时的照片都上传到了 成都图片网, 这个成都图片网专门有一个 “快拍成都” 的版块,用于大家将随手拍的生活中的图片分享上去。每天编辑还会选出一张最有特色的图片,刊登到《成都商报》上。

我们必须自学

前两天看到一个文章,题名为 《所有的程序员都是自学成才》。当时没有什么特别的想法,只是觉得自己也确实是基本上靠自学来掌握新的知识的。但是今天在公车上没事好好想了一想,想明白了,原来对于程序员来说,只能自学才能成才。

2011年个人总结

2011 年的过去了,总结一下今年的成长和收获。

流水账

2011 年是我完整工作的一年。不过这一年的工作也变动频繁。

首先是从 1 月份专门搞 uvs,把 uvs 升级成 ouvs。升级后增加了对于时间段搜索的支持。另一方面,周末在家做的 topcoder component 终于拿到了一次第一。这是一个做 IBM Symphony 插件的项目,因为之前在 IBM 实习一直做相关的东西,所以能够很快的做出来,那个东西 tricky 的东西很多,所以基本上没有人做。不过除我之外还有一个会做的,竞争就只是我和他之间了,不过最终我比他得分稍高一点,拿到了 800$ 的第一名奖金,另外 digital run 的排名还多拿了 100 多 $。一月份的时候把这个钱通过 wireless
transfer 转到了我的工商银行账号,然后马上换成了人民币。第一次尝到拿美元,还是很开心的。

mac 下的 top 命令
以前只是在 linux 机器上使用 top 命令。常用的快键键是: p 键 - 按 cpu 使用率排序 m 键 - 按内存使用量排序 这 2 个快捷键在 mac 上都不一样。对应的是,先输入...
去掉Xcode源码末尾的空格
在用 Xcode 开发的时候,很容易就在行末增加一些空格了。这些空格在上传到 review board 上后 , 就会被特别的颜色显示出来。因为一种好的编程风格是说 , 不应该在行末增加不必要的...
让UILabel的文字顶部对齐
默认UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中。 如下图所示(图片来自stackoverflow): 比较郁闷的是,UILabel并不提...
使用RBTool自动提交code review请求

前言

让我们回想一下手工提交review请求的过程:

  1. 首先得用 svn diff > filename.diff 生成diff文件。
  2. 然后输入review board的网址,可能是 rb.companyname.com
  3. 然后需要输入你的账号密码进行登录验证。
  4. 然后你需要填写你的svn repository 地址,然后上传diff文件。
  5. 然后你进到review请求的详细页面,填写summary, description, test-done, group和people项,而通常情况下,你的group是固定的,review你的people也就是那么几个人来回变。
  6. 最后你填完这些内容,点击 publish 来发布你的review请求。
avatar
唐巧
一个中年程序员,正在努力学习做业务