文章列表
最近的工作中比较频繁的用到了Block,不在是以前当做函数指针的替代或者某些API只有Blocks形式的接口才不得已用之了,发现自己对其了解还是太浅,特别是变量的生存期,按惯例还是翻译官方文档,原文链接。
介 ...
UIInterfaceOrientation和UIDeviceOrientation长得是又长又像,长久时间我根本没有区分这两个类型,肯定也混用了无数,直到我现在处理的一个问题,明明是横/竖屏的情况,控件却是以竖/横的布局展示,而且我在模拟器上怎么都搞不出来,而测试稍微把机器转转圈就能重现这个现象。
那么定位的方向很明确,肯定是在willRotateToInterfaceOrientation之类的函数里咯。于是我看到了这样的代码
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOr ...
项目需要在程序里即时设定语言,而非iPhone默认的设置。因为现在的项目已经比较繁杂,而且有时候是视图直接加载,有时候是使用导航栏,有时候又是addSubView等等不足一一道,而且每种视图还可能有不同的入口,总之管理起来 ...
一直很想把设计模式做起来,但是一方面,项目筹划的时候空想很多模式,但是却不下手去做,项目实际开始了又狂赶代码,没空去注意,这导致我对模式的理解和运用一直不深。中途我也无数次拿起<设计模式>看,但是都很难坚持,后来想通了,模式用得到就用上,用不到不必勉强,我记住这些模式的适用范围,然后在实际开发的时候,如果发现似乎应该用到某个模式,那么就拿过来参考,同时对已经用上手的模式不断加深印象和熟悉实质,能用上才是必须学的。
看过著名的用ruby踩四人帮的帖子,特别是对其很多模式其实是语言特性贫乏的症状很赞同,但总结经验,提取共识并加以类比,我相信还是有益处的。
做windows客户端 ...
plist文件广泛使用在Mac系统上,iPhone程序也在很多地方直接操作该文件。该文件类型实际上就是个XML,而且格式相当简单一致,这里给文件结构给出讲解,也顺便复习一下快忘光的java。
首先plist是xml,版本1.0,字符集始终采用utf-8,然后DOCTYPE是plist,publicID和systemID也是固定的值,然后就是标准的plist节点,这个节点将视为根节点,对应在plist视图中的Root,注意根节点有一个属性是version,一般是1.0。
每个节点,包括根节点都有其类型,分容器型和值型,容器型有DICTIONARY和ARRAY,DICTIONARY就 ...
规范上NSString做属性都是写成copy的,理论上应该是复制了字符串而不是单纯的增加引用计数,其实问题只会出现在把NSMutableString赋值给NSString的时候。
@interface Demo : NSObject
{
NSString *retainString;
NSString *copyString;
}
@property (nonatomic, retain)NSString *retainString;
@property (nonatomic, copy)NSString *copyString;
@end
@im ...
Objective-C搞了很久了,结果现在还是对起内存管理与对象初始化一知半解,还好都是些移动开发没出太大问题,不过现在的一个模块化应用上对语言的使用要求更加严格了,还是从官方文档搞起吧,原文是Allocating and Initializing Objects
(链接经常变,不保证可用),出自Introduction to The Objective-C Programming Language
,也是Memory Management Programming Guide
的理解前提。
对象分配空间与初始化
对象分配空间与初始化
使用Obje ...
可能是之前Windows开发惯了,做下载模块的回调的时候都是直接对回调函数进行调用的,不过这在现代语言构建的应用上,如果子线程触发了UI操作,有可能会core掉,在iPhone里特别是对UIWebView。所以不得不在所有回调方法里用performSelectorOnMainThread。但这个方法实在太烂了,首先主体要是NSObject,参数还只能有一个Object的NSObject,不能多参,而回调的时候完全可能回返id和错误码等等信息,所以就得写成数组,然后再分解,同时还要加上类型,根据类型分解数组并调用不同的回调。
实在太傻了所以我想找别的替代方法,搜了一下void dispat ...
总览
在Xcode的iPhone SDK
3.0之后,已经内置了单元测试的功能,开发者可以借助单元测试写出更健壮更正确的代码。本文使用的SDK版本是3.2.3。
Xcode提供了两种单元测试方式,分别是逻辑测试与应用测试,逻辑测试用于检验? ...
概念介绍
这里的闭包自然是计算机语言中的闭包,词法闭包(Lexical
Closure)的简称,主要表现在函数可以引用到自由变量,并且可以脱离变量的创建环境,再复杂的定义也不需要多说明了,可以理解为面向对象里面的成员
函数可以调用其成员变量,然其概念却比面向对象的概念流行早的多,约六十年代在Scheme里就实现了。函数式编程语言里这是极为常见的概念,而非函数式
的语言中js里也有很多闭包出现的身影。
Objective-c的闭包
准确地说在Objective-c里不叫闭包(Closure)而叫Block,但概念还是大同小异的。Mac平 ...
当前需求
在做登录模块时,需要做登录的历史记录,存储本机所有登录的用户的用户名密码,以及登录策略如是否记住密码,是否自动登录等。具体实现之前,我认为
这个需求看样子并不需要SQLite,因为登录用户不可能太多,而且存储的字段也就四个而已,估计用NSUserDefaults存一下数组就结了。
初遇困难
令我沮丧的是,这么一个明确的需求竟然一时半会都没有完成,用户登陆信息明明很简单的
@interface LoginUserInfo : NSObject
{
NSString *username_;
NSString *passwor ...
一般在iPhone开发中,除了在使用c函数时不得不使用char*作为字符串参数,我们都会选择NSString类型的字符串作为首选。
NSString比起char*当然好的不是一星半点,安全,易用性甚至包括字符编码都是很不错,但相对Java中的String有 ...
加速计是iPhone非常吸引人的特性之一,借由本特性产生了很多极具创意的游戏和便于用于的操作,令人惊叹的使用加速计无疑对开发iPhone程序是加分的亮点。
iPhone内置的加速计是三维全方向感知的,手机平面左右两侧对? ...
目前又有了一个想在iPhone上做协助调试的设想,当然控制权什么的是别说了,就是做一些协助方在自己屏幕上点点划划,被协助方也要有同样的操作,因为被调试程序的不确定性,那只能做成发送各种针对屏幕的模拟事件了。
因为apple没有放出直接发送触屏事件等的API,所以用的都是越狱的iPhone加上PrivateFramework,根本没指望上市,反正就是为了内部调试。
首先在kennytm的网站拔下私有framework的头文件,就本应用而言,只需要GrapicsServices文件夹以及Availability2.h即可。然后导入Xcode目录下Platforms下对应的GraphicsServic ...
最近的项目里经常用,所以顺手翻译一下,也增强了解,同样无版权不保证内容正确性,原文地址
do shell script in AppleScript
这篇技术要点回答了AppleScript中的do shell script命令中经常被问及的问题,该命令自AppleScript1.8后引入
文本讲 ...
用*nix肯定没有不用grep的,据说这玩意还是HR的最爱,简单的用可以轻松刷选简历之类的,只要看里面有没有相应技能关键字就成了。
其实它还是挺强的,甚至于可以做逆向环视,不过我还不清楚它如何输出捕获型括号里面的内容
set fastComp to do shell script "defaults read com.apple.Xcode PBXCustomTemplateMacroDefissnitions|grep -Po \"(?<=ORGANIZATIONNAME = \\\")([^\\\"]*)\"" ...
MacOSX确实是个相当好用的系统,无论是对普通用户还是开发者,比如很方便的defaults,一行shell就可以任意存取一些键值信息,而且可加域名控制和字典形式的键值,无需关心令人烦恼的持久化。
一开始的用途是在Xcode新建文件时修改公司名,用法也很简单
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAME "Your Company Name"
重启过Xcode就会发现原本的那些__MyCompanyName__全部被替换 ...
苹果的文档比起MSDN或者JDK的注释那是太垃圾了,我就几乎没有遇到过没有错误的情况,这还是在我根本不深入的情况下,没有代码sample相比都根本不算问题。
比如我sed想做文件原地的替换,但是怎么写都出错,错误提示还莫名其妙,后来多方搜索才知道Mac上的sed如果参数有-i就必须加上备份指令,即-i后添加任意字符,那些字符就作为备份文件的后缀名,
可耻的man上却写得好像是可选的一样。
烦人的是即使sed没有做替换它还是会备份文件,相当的浪费。
这几天利用shell处理问题真是相当开眼界了,不愧是Unix系统的精髓,就像现在有一个需求,要把不同文件里的文件占位符替换成该文件的 ...
文中资料来源主要是《AppleScript跟我学》的中文译本以及Apple的的Technical Note
AppleScript是用在MacOSX上的脚本语言,和操作系统结合的相当紧密,不过一般来说我也没兴趣学一门应用不太广泛的专属语言,但一来是项目需要,而且这个语言确实好用并且简单易学,就当消遣消遣好了。写好的脚本可以用NSTask很方便的执行,而脚本本身几乎什么都能做。
编辑器可以选择自带的Apple Script Editor就在应用程序的实用工具下面,应付是绝对够了,需要代码提示的话请把偏好设置中的“使用脚本助理”勾选,而代码提示的输入是用Esc键,当然你也可以选择Xc ...
必须要说这玩意还是挺强的,直接实现了iPhone平台上的自动化测试,而且是模拟器真机通吃,调起来也不算多难,iOS 4之后原生支持。
下面是牢骚:首先这自动化测试的脚本还得用js编写,这需要测试人员掌握一定的编码能力?? ...
记录一下平时开发工作中的一些经验和问题解决的积累,仍然是没什么体系可言。有些是转自项目组的集体智慧。
使用Mac操作系统不太习惯,它很多组合建都是用到Command,但项目组没钱买Mac真机,都是?? ...
原文Google Objective-C Style Guide
iPhone项目新成立,也没有编码规范的积累,项目组本来是想拿老的C编码规范套用的,但评审一下就发现问题多多,之后找到了Google的Objective-C的编码规范,大家就先翻译一下咯
声明这是无版权翻译,也不对任何错误负责,不保证文章的完整性,我到现在也认不全语法。
(大半年的事后,决定对这份文档做重审,当然不是对修辞手法,而是处理内部的硬伤)总览
背景知识
Objective-C是一个C语言的扩展语言,非常动态,非 ...
因为项目组正在做IPhone的项目,公司内部既无积累更无经验,就想起一个先行示范的表率,以前就一直想搭建的Wiki服务器正好就一鼓作气拿下了。
公司的Windows操作系统闲置机器很多,本来是想在Windows上搭建的,但匆匆找了半天,要么要装虚拟机,要么不稳定,加上我也很想多习惯MAC系统,所以还是选择了在MAC上搭建,选择的Wiki版本是MediaWiki,也是大名鼎鼎的维基百科使用的版本。提一下本机操作系统版本是10.6.3,非苹果正品而是破解安装在清华同方的某款机器上。
搜索一下就找到了MediaWiki的官网,不出意外的是整个官网都是由自 ...
|
|