since.2006  

弄到台淘汰的iPhone 3G一看系统还是2.2的,Orz。这么古老的系统在AppStore中基本没什么新版程序可以下载使用了,蛋疼的居然还是有锁版的只能越狱后解锁才能使用,记录下过程以后方便再次越狱时参考。

一些信息:

  1. 3G版系统最高只能升级到iOS 4.2.1
  2. iOS 4.2.1目前可以完美越狱和解锁
  3. 解锁过程根据不同情况分几种方法

越狱工具:

  1. iPhone 3G对应的4.2.1固件
  2. 越狱工具redsn0w_win_0.9.6rc16

解锁步骤:

越狱完后,可以在Cydia里下载ultrasn0w来解锁,解锁分为几种情况:

  1. 如果目前版本ultrasn0w直接支持软解当前手机的基带版本,直接安装即可
  2. 在Cydia中安装fuzzyband降级当前手机基带,bootloader为05.08才能降级,运行fuzzyband程序会自动判断并提示能不能降级
  3. 如果上述两种方法都不行,则安装iPad基带(redsn0w中有此选项)将iPhone 3G基带升级到06.15.00,ultrasn0w支持此版本基带解锁。

使用第3种方法升级到iPad基带后是不可以降级的了,但想使用SIM卡也只能这样了。:-)

大致过程就是这样,具体的细节到时忘了再google,大把文章。

update @ 2012-06-10: 安装iPad基带时不能同Cydia一起安装,不然redsn0w会闪退(这时得重新用itunes还原官方ROM再重新越狱)。解决方法是分开安装,如安装完cydia后,再运行一次redsn0w安装iPad基带。

 

Posted by hee at 01:04 AM | Permalink | 评论(0)

在App Store中升级xcode 4.3.2感觉速度比较慢,于是手工下载安装后将Launchpad中程序弄乱了,一直显示下载中看起来很不舒服,被俺人肉搞定后才发现有一些专门管理Launchpad的程序可以直接拿来使用,如:Launchpad Control等。

其实Launchpad中的程序图标配置信息都存放在sqlite中,找一个sqlite管理工具便可自己随便操作了,步骤如下:

1. 设置Finder可以显示隐藏文件,在终端下执行:

defaults write com.apple.Finder AppleShowAllFiles YES

2. 按住alt并右键点击Finder图标,选择“重新开启”

3. 进入~/Library/Application Support/Dock目录,将会看到一个UUID.db的文件,备份一下。

4. 用sqlite管理工具打开后将会看到几个表,在apps,groups表中删除相关记录。

5. 注销一下再登录系统让Launchpad重新读取刚刚的修改。

 

Posted by hee at 07:04 AM | Permalink | 评论(0)

有时为了美化UITextField样式会使用自定义背景图片而将本身的边框隐藏,这时基本上光标的位置都不会很合适,而UITextField默认不可以设置padding,咱们可以自定义一个子类实现padding。

//
//  UITextFieldEx.h
//

#import <Foundation/Foundation.h>

@interface UITextFieldEx : UITextField {
    
    BOOL isEnablePadding;
    float paddingLeft;
    float paddingRight;
    float paddingTop;
    float paddingBottom;
    
}

- (void)setPadding:(BOOL)enable top:(float)top right:(float)right bottom:(float)bottom left:(float)left;

@end

阅读全文 "UITextField设置padding" »

Posted by hee at 11:03 AM | Permalink | 评论(0)
程序名称国际化:
1. 新建InfoPlist.strings
2. 查看InfoPlist.strings属性,在Localization节添加需要国际化的语言
3. 分别添加内容:CFBundleDisplayName="程序名称";

程序内容国际化:
1. 新建Localizable.strings
2. 查看Localizable.strings属性,在Localization节添加需要国际化的语言
3. 分别添加内容:"key1" = "value1";
4. 在程序中使用:NSLocalizedString(@"key1", nil); 读取内容

注意修改Localizable.strings时,如果要使用注释的话,不能使用 # 这种单行注释,可以使用 /* */ 这种多行注释。因为一使用 # 注释后,接下来的实际内容都无效了。这个问题害得俺查找了半个多小时,开始一直以为是缓存引起的。Orz


Posted by hee at 12:03 PM | Permalink | 评论(0)
Cornerstone是Mac OS下一款强大的SVN客户端,不过试用周期只有14天。

可以用下面方法重置试用期限,不过如果这款程序真的帮到大家,亲~请购买正版哦。

1.显示系统隐藏文件

在终端(Terminal)中输入如下命令:defaults write ~/Library/Preferences/com.apple.finder AppleShowAllFiles -bool true

为true时显示隐藏文件,为false是不显示隐藏文件。执行完后需重启。

2.打开~/Library/Preferences/ByHost下的.GlobalPreferences.XXXX.plist文件,XXXX为一串疑似UUID一样的字符串。

删除其中类似<key>com.zennaware.Cornerstone:2.6</key><data>......</data>的行。

3.保存,打开Cornerstone试试。

Posted by hee at 23:02 PM | Permalink | 评论(0)

为了解决这个问题,整整调试了一个多星期。对照教程一遍又一遍的测试,一直以为问题出现在代码上。结果是因为iphone越狱过引起的,刚刚还原到官方版本后,没有问题了。

以前有看到网友提过可能是越狱引起的,由于懒得刷回官方版本(主要想越狱后用手势插件)完成测试后再越狱,随便找了几个流行的程序点击In-App Purchases功能进行测试,都能正常弹出支付对话框,由此判断是自己代码问题。结果……

如果手机没有越狱,一样返回invalid product identifiers,那么可以参照下面这个列表对照看有没有什么步骤漏掉了。

可能造成返回invalid product identifiers的原因列表:
http://troybrant.net/blog/2010/01/invalid-product-ids/

 

Posted by hee at 22:08 PM | Permalink | 评论(3)