代码改变世界

随笔分类 -  iOS

数据存储小结

2011-11-11 15:12 by v2m, 2554 阅读, 收藏, 编辑
摘要: 首选项设置存储NSUserDefaults 以及通过它控制的SettingBundle NSUserDefaults 用来保存一些设置,他会自动写到何时的位置。NSUbiquitousKeyValueStore 多平台同步设置,限制是大小64k,开启entitlement,唯一Apple ID(还要考虑无法连接到iCloud网络时的情形)文件存储一.目录描述<Application_Home>/AppName.app bundle目录,包括程序本身。往里面些东西会导致签名改变和重启程序。初始同步后iTunes不备份此目录。<Application_Home>/Docum 阅读全文

UITextField小结

2011-10-31 16:47 by v2m, 1797 阅读, 收藏, 编辑
摘要: 文字属性textplaceholder //默认使用70%灰色 font textColor textAlignment文字大小adjustsFontSizeToFitWidthminimumFontSize编辑行为editing //是否正在编辑(read-only)clearsOnBeginEditing展现形态borderStyle //默认UITextBorderStyleNone,是UITextBorderStyleRoundedRect时自定义的background无效backgrounddisabledBackgroundproperty //backgrou... 阅读全文

ios界面动画小结

2011-10-28 17:22 by v2m, 7832 阅读, 收藏, 编辑
摘要: 一.基本方式:使用UIView类的UIViewAnimation扩展函数说明+ (void)beginAnimations:(NSString *)animationID context:(void *)context; // 开始准备动画+ (void)commitAnimations; // 运行动画// 没有get方法,下面的set在快外调用无效+ (void)setAnimationDelegate:(id)delegate; // 委托default = nil+ (void)setAnimationWillStartSelector:(SEL)selector; // defaul 阅读全文

Xcode调试相关小结

2011-10-21 14:25 by v2m, 2054 阅读, 收藏, 编辑
摘要: 一.设置NSZombieEnabled使用NSZombieEnabled功能,当代码中访问已经释放了内存的地方,会给你下面这样的提示,而不仅仅是EXEC_BAD_ACCESS:2008-10-03 18:10:39.933 HelloWorld[1026:20b] *** -[GSFont ascender]: message sent to deallocated instance 0x126550如果要查看上面地址的分配情况开启MallocStackLogging(Xcode4勾选下MallocStackLogging就行)出错时shell malloc_history pid addre 阅读全文

ios拷贝小议

2011-10-12 15:20 by v2m, 1461 阅读, 收藏, 编辑
摘要: 1.copy vs mutableCopycopy,对于不可变的对象,简单的指向其内存.对于可变对象,复制内存内容到新的内存中并把新的内存值赋值给左值.mutableCopy,始终复制到新的内存中,以一个可变的类型赋值给左值.2.copy vc retainretain,引用计数+1,内存地址赋值给左值.copy,对于不可变对象的,相当于retain;对于可变对象,则是深拷贝赋值.举例: NSString* a = [NSString stringWithFormat:@"%@",@"this is a"]; NSString* b = [a copy] 阅读全文

由iPhone项目生成iPad项目

2011-10-11 10:46 by v2m, 595 阅读, 收藏, 编辑
摘要: 一 过程:1.如果项目中由nib文件,可以如下图,保持Device是iPhone状态复制target,在弹出的对话框中选择 转换成ipad那个选项就可以把所有的nib文件转化成iPad版本. 之后复制的那个target用不到的话可以删除,然后就是定义ipad版本的启动nib文件2.调整,因为尺寸不同了,所以ipad版nib文件要调整,代码中相关的也要调整 可以这样定义一些宏// 检测#define ISIPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)// 选择#define PAD.. 阅读全文

如何获取UIWebView中全屏播放视频事件

2011-09-29 23:04 by v2m, 1957 阅读, 收藏, 编辑
摘要: 这样一种情况,用UIWebView加载一个页面,竖屏,页面中有视频,现在我们希望在全屏播放这个视频的时候可以横屏.解决方法如下: 1.设置一个变量监控是否全屏播放视频 2.根据这个变量设置是否可以横屏 问题又来了,如何获取横屏事件.这需要从UIView中派生出一个自定义类,然后把UIWebView所在的UIViewController的根view设置成这个类别的(有xib文件的通过修改CustomClass项).自定义类中重写下面两个方法.- (void)didAddSubview:(UIView *)subview {//如何确定这个subview是播放视频的呢?//1.根据... 阅读全文

cocos2d简易引导

2011-09-14 18:04 by v2m, 345 阅读, 收藏, 编辑
摘要: 一.安装下载:http://www.cocos2d-iphone.org/download进入目录,执行./install-templates.sh -u如果之前已经存在可以这样强制更新./install-templates.sh -f -u这会安装三个模版: 标准cocos2d模版 带box2d的模版 带chipmunk的模版二.sprite小例1.创建一个标准模版生成的工程.2.在xxxLayer.m中全局声明(也可以不声明,而在后面用getChildByTag)CCSprite *seeker1;CCSprite *cocosGuy;3.在init的if块里面重写// create... 阅读全文

小议Block

2011-09-08 13:58 by v2m, 693 阅读, 收藏, 编辑
摘要: 一.作用功能与函数相当,可以在使用时定义,让代码作用明了.可以在块中修改全局变量,静态变量,__block修饰的局部变量.例一:声明实现int (^Multiply)(int, int) = ^(int num1, int num2) { return num1 * num2;};int result = Multiply(7, 4); // result is 28 例二:调用对比- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self ... 阅读全文

NSTimer小结

2011-09-06 14:58 by v2m, 2651 阅读, 收藏, 编辑
摘要: 一.说明 可以精确到50-100毫秒,和CFRunLoopRef是"toll-free bridged",可以重复间隔或不可重复.NSTimer不是绝对准确的,而且中间耗时或阻塞错过下一个点,那么下一个点就pass过去了.二.方法1.创建没有scheduled的话需要手动addTimer:forMode:添加timer到一个ruloop中,scheduled的以默认mode直接添加到当前的runloop中.+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invo 阅读全文

UIButton小结

2011-08-30 23:22 by v2m, 2372 阅读, 收藏, 编辑
摘要: 1.创建+ buttonWithType: // 创建并返回一个特定风格的按钮2.设置标题 buttonType property titleLabel property // 显示按钮当前标题的视图(只读).虽然它是只读的,但是它的属性是可读写的.它的属性在按钮还没有显示之前就有返回值.系统按钮这些值为nil reversesTitleShadowWhenHighlighted property // 确定按钮高亮时是否改变阴影的Bool值.默认时NO,当为YES时,阴影在雕刻与浮雕感之间变化(差不多就是去正常offset的相反数作为新的offset)– setTitle:forStat.. 阅读全文

Xcode4 使用 Organizer 分析 Crash logs

2011-08-16 17:36 by v2m, 2184 阅读, 收藏, 编辑
摘要: 一.四种崩溃类型程序崩溃: 可能是最常见的,经常发生于内存访问出错,异常,或者其他的程序错误内存不足: 系统因为没有足够的内存满足程序需求从而杀死程序出现这种日志.它不同于其他日志的是它没有程序各线程的堆栈信息. Rather than be concerned about what part of your code was executing at the time of termination, you should investigate your memory usage patterns and your responses to low memory warnings. Memo 阅读全文

UILabel小结

2011-08-15 21:08 by v2m, 2302 阅读, 收藏, 编辑
摘要: 一.默认状态单行,不可获取用户点击事件,UIViewContentModeRedraw模式,改变就重绘.二.相关属性与函数1.文本属性text // label 显示的文字font // text 的字体,值不可以是nil,否则异常textColor // text 的颜色textAlignment // text 的对其方式lineBreakMode // 当文字超出label显示区域时的截取方式typedef enum { UILineBreakModeWordWrap = 0, // 以空格为界,保留整个单词 UILineBreakModeCharacterWrap, // 保留整个字符 阅读全文

ios下新浪腾讯oauth认证对比

2011-05-19 17:03 by v2m, 770 阅读, 收藏, 编辑
摘要: 现在大家一般都用oauthconsumer进行oauth认证,但是如果不修改一点什么的话,新浪跟腾讯的oauth认证都不能用它完成.对于新浪来说,修改的地方就是mutableurlrequest.m中添加for (NSString *parameterName in [[extraOAuthParameters allKeys] sortedArrayUsingSelector:@selector(compare:)]) { [parameterPairs addObject:[[OARequestParameter requestParameterWithName:parameterNam. 阅读全文