sansan
凉凉的阿玛尼呀还要擦香香.......
摘要: 1 UITableView 行分割线不到头,短线问题if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableView setSeparatorInset:UIEdgeInsetsZero];}2 iOS 7 全屏幕排版 改为 iOS 6 的排版方式。默认从状态栏和导航栏下面开始排版- (void)viewDidLoad{ if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) { self.edges... 阅读全文
posted @ 2013-12-20 11:27 sansan- 阅读(713) 评论(0) 推荐(0) 编辑
摘要: Apple对其设备有严格的使用限制,任何应用程序都必须经过iTunes Store下载安装,要么直接从设备里下载,要么从电脑中通过iTunes下载后同步到设备中。所以没有经过破解的设备是没有办法直接安装IPA文件的。但是Apple也提供了一套面向开发者的机制,让他们可以在指定的设备上安装IPA文件来测试和开发,这个机制的核心就是开发者授权。我前面介绍的申请流程就是申请获得一个可以在设备中安装运行IPA文件的开发者授权。使用开发者授权是一套完整而且相对合理的流程,它可以分为下面几个阶段:授权设备,将开发者授权与指定的设备绑定在一起,使得这些设备可以自由安装开发者发布的IPA。生成授权文件.mob 阅读全文
posted @ 2013-06-03 17:31 sansan- 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 教程截图: 下面是一篇有澳洲墨尔本的一名全职iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人– Adam Eberbach。 ·Bundle identifier ·provisioning profiles ·App ID ·certificate signing request 对于新手,的确很难一口气搞清楚这些东东到底有什么区别。 下面我们来揭开它们的神秘面纱,在读完这篇文章后,你应该可以把这些东西联系起来,你能够理解它们是怎么工作,并能够顺利地在device上运行你的应用了。 当然,这里假设你已经是一个iOS开发者,拥有IDP,并已经有一定 阅读全文
posted @ 2013-06-03 17:01 sansan- 阅读(294) 评论(0) 推荐(0) 编辑
摘要: Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用dispatch_suspend函数来挂起,使用 dispatch_resume函数来恢复。这两个函数的行为是如你所愿的。另外,这两个还是也可以用于dispatch source。一个要注意的地方是,dispatch queue的挂起是block粒度的。换句话说,挂起一个queue并不会将当前正在执行的block挂起。它会允许当前执行的block执行完毕,然后后续的block不再会被执行,直至queue被恢复。还有一个注意点:从man页上得来的:如果你挂起了一个queue或者source,那么销毁它之前,必须先对 阅读全文
posted @ 2013-02-05 15:53 sansan- 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 何为Dispatch Sources简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型?下面是GCD 10.6.0版本支持的事件:Mach port send right state changes.Mach port receive right state changes.External process state change.File descriptor ready for read.File descriptor ready f 阅读全文
posted @ 2013-02-05 15:49 sansan- 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局 dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局 队列进入相同的工作线程池(除非你的用户队列的目标是主线程,但是为了提高运行速度,我们绝不会这么干)。有两种途径来通过GCD“榨取”多核心系统的性能:将单一任务或者一组相关任务并发至全局队列中运算;将多个不相关的任务或者关联不紧密的任务并发至用户队列中运算;全局队列设想下面的循环: for(id ... 阅读全文
posted @ 2013-02-05 15:47 sansan- 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像 NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之 NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。除了代码的平行执行能力,GCD还提供高度集成的事件控制系统。可以设置句柄来响应文件描述符、mach ports(Mach port用于 OS X上的进程间通讯)、进程、计时器、信号、用户生成事件。这些句柄通过GCD来并发执行。GCD的API 阅读全文
posted @ 2013-02-05 15:31 sansan- 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准备好的内存泄露的Demo吧:leak app下载下来,打开运行,程序是一个寿司的列表,列出各种寿司卷。试着选择里面的几行,应该是选第二行的时候就崩溃了。崩溃截图:在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash... 阅读全文
posted @ 2013-01-18 17:12 sansan- 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1.文件CMD + N:新文件CMD + SHIFT + N:新项目CMD + O:打开CMD + S:保存CMD + SHIFT + S:另存为CMD + W:关闭窗口CMD + SHIFT + W:关闭文件2.编辑CMD + [:左缩进CMD + ]:右缩进CMD + CTRL + LEFT:折叠CMD + CTRL + RIGHT:取消折叠CMD + CTRL + TOP:折叠全部函数CMD + CTRL + BOTTOM:取消全部函数折叠CTRL + U:取消全部折叠CMD + D:添加书签CMD + /:注释或取消注释CTRL + .:参数提示ESC:自动提示列表3.调试CMD + 阅读全文
posted @ 2012-10-29 13:34 sansan- 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Application requires iPhone environment如果应用程序不能在ipod touch上运行,设置此项为true;Application uses Wi-Fi如果应用程序需要wi-fi才能工作,应该将此属性设置为true。这么做会提示用户,如果没有打开wi-fi的话,打开wi-fi。为了节省电力,iphone会在30分钟后自动关闭应用程序中的任何wi-fi。设置这一个属性可以防止这种情况的发生,并且保持连接处于活动状态Bundle display name这用于设置应用程序的名称,它显示在iphone屏幕的图标下方。应用程序名称限制在10-12个字符,如果超出,i 阅读全文
posted @ 2012-09-05 15:52 sansan- 阅读(495) 评论(0) 推荐(0) 编辑