
iOS
风羿wy
微信: ryan_wyn
展开
-
ReactiveCocoa 和 MVVM 入门
翻译自ReactiveCocoa and MVVM, an Introduction. MVC任何一个正经开发过一阵子软件的人都熟悉MVC. 它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义:Massive View Controller(重量级视图控制器). 它让许多程序员绞转载 2017-04-24 17:32:43 · 1037 阅读 · 0 评论 -
CodeSign error: Certificate identity 'iPhone Developer:xxx appears more than once in the keychain.
当重新下载安装了.cer文件,更新了profile 后,再编译iphone项目时,发现下面的错误:CodeSign error: Certificate identity 'iPhone Developer:xxx appears more than once in the keychain'error: Certificate identity 'iPhone Developer转载 2013-05-03 11:45:12 · 1720 阅读 · 0 评论 -
[iOS]提交iPhone app程序遇到newsstand错误
To include newsstand features, the info.plist must include the uinewsstandapp=true.参看http://stackoverflow.com/questions/6977357/xcode-gave-strange-newsstand-error-when-trying-to-submit-an-app这转载 2013-02-01 11:50:48 · 1651 阅读 · 0 评论 -
UIScrollView的作用原理,实现scrollView中touch事件作用子视图
我们知道当多个视图进行叠加的时候,touch事件是作用到最上面的视图上,但是如果父视图是UIScrollView,如果默认,可能touch子视图会造成UIScrollView的滚动。UIScrollView滚动的原因,可以看UIScrollView 原理。我在这里简单的描述一下,UIScrollView的工作原理,当手指touch的时候,UIScrollView会拦截Event,会转载 2012-11-19 11:57:48 · 9819 阅读 · 1 评论 -
[iOS]GCD小结
0. Brief Introduction GCD,全称Grand Central Dispath,是苹果开发的一种支持并行操作的机制。它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后者用来执行任务。 GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行(但不保证一定先执行结束)。 通过与线程池的配转载 2012-11-26 14:57:51 · 20357 阅读 · 3 评论 -
iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
介绍:Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。设计:GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务。转载 2012-11-26 14:52:38 · 3138 阅读 · 0 评论 -
[iOS]Xcode4/iOS5调试UncaughtException崩溃First throw call stack不打印方法名的解决方案
最近连接iOS5.0.1真机调试的的时候,发现UncaughtException导致crash之后*** First throw call stack:后面没有打印可读的调用堆栈,以前崩溃之后会显示详细的调用的方法名等信息,但是现在都是一堆内存地址0x…..0x…..。我起初也不知道怎么回事,之前似乎也没碰到过。谷歌了一下,看到了一篇文章(http://stackoverflow.com/转载 2012-08-22 11:07:20 · 7215 阅读 · 0 评论 -
当程序崩溃的时候怎么办 part-1
有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了。(悲伤地音乐响起)我们需要做的第一件事就是:不要惊慌。修复崩溃不是很困难的。假如你崩溃了,并且胡乱的改些东西,而且还在不停的念着咒语希望bug神奇的自动消失,你大多数情况下都会使情况更麻烦。相反的,你需要知道一些系统的方法,并且学习怎么找到崩溃和他的原因。转载 2012-08-22 11:01:38 · 2522 阅读 · 0 评论 -
当程序崩溃的时候怎么办 Part-2
原文地址:http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-2欢迎回到当程序崩溃的时候怎么办 教程!在这个教程的第一部分,我们介绍了SIGABRT和EXC_BAD_ACCESS错误,并且举例说明了一些使用xcode调试器(Xcode debugger)和异常断点(Exception Breakpoints转载 2012-08-22 11:05:36 · 9319 阅读 · 0 评论 -
[iOS]让你的应用支持新iPad的Retina显示屏
上周起大家伙纷纷开始上手第三代iPad了。由于新iPad采用了Retina显示屏,分辨率较上一代iPad增加了一倍(译者:长宽增加一倍,像素是上一代的四倍)。为了支持新增的这些个像素,iOS开发者需要考虑升级自己的iPad应用,我在下文列举了一些必须注意的事项。一、应用图片标准iOS控件里的图片资源,苹果已经做了相应的升级,我们需要操心的是应用自己的图片资源。就像当初为了支持iPhon转载 2012-08-20 15:56:04 · 2932 阅读 · 0 评论 -
[iOS编程-XCode Debug忽略SIGPIPE信号
在使用socket的send函数时,如果此时服务器断开连接,socket将会收到broken pipe的错误。我们可以判断类似的错误来进行重连,但是在这之前系统就会发出SIGPIPE的信号,导致我们的程序crash。所以我们需要先屏蔽sigpipe的信号struct sigaction sa;struct sigaction osa;sa.sa_handler转载 2013-11-14 14:33:40 · 4600 阅读 · 0 评论 -
iOS抓包
1. 在mac上为iPhone或iPad建立虚拟网络接口终端中输入(后面的参数为iPhone或iPad的UDID):rvictl -s bffdc51b470f201972dd8f5975a321da11c9e8de成功的话,终端显示:Starting device bffdc51b470f201972dd8f5975a321da11c9e8de [SUCCEEDED]原创 2014-03-19 14:01:02 · 4937 阅读 · 1 评论 -
ReactiveCocoa 和 MVVM 入门
翻译自ReactiveCocoa and MVVM, an Introduction. MVC任何一个正经开发过一阵子软件的人都熟悉MVC. 它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义:Massive View Controller(重量级视图控制器). 它让许多程序员绞转载 2017-04-24 17:31:27 · 826 阅读 · 0 评论 -
iOS开发网络篇—数据缓存
一、关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的。 上面的情况会造成以下问题(1)用户流量的浪费(2)程序响应速度不够快解决上面的问题,一般考虑对数据进行缓存。 二、缓存 为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存)转载 2017-04-22 15:40:19 · 521 阅读 · 0 评论 -
使用VIPER构建iOS应用
转自Di Wu's blog,原文:Architecting iOS Apps with VIPER 建筑领域流行这样一句话,“我们虽然在营造建筑,但建筑也会重新塑造我们”。正如所有开发者最终领悟到的,这句话同样适用于构建软件。 编写代码中至关重要的是,需要使每一部分容易被识别,赋有一个特定而明显的目的,并与其他部分在逻辑关系中完美契合。这就是我们所说的软件架构。好的架构不仅让转载 2017-04-30 23:16:04 · 900 阅读 · 0 评论 -
iOS 框架模式(简述 MVC,MVP,MVVM 和 VIPER)
写在前面的话最近看了一篇国外大牛写的关于 iOS 框架模式的文章,内容涉及目前 iOS 端诸多主流的框架模式,个人感觉文章写的很不错,收获匪浅,希望能够通过翻译原文的方式更好的体会一下,也分享给更多的人参考。原文地址在这里,浏览原文可能需要科学上网。正文原文配图,感觉不错在 iOS 中使用 MVC 感觉怪怪的?想要投奔 MVVM 但是又感到迟疑?听说过 VIPER,转载 2017-04-30 19:20:53 · 734 阅读 · 0 评论 -
iOS7实现后台拉取
原文链接:http://esoftmobile.com/2013/06/23/ios7%E7%A8%8B%E5%BA%8F%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C/介绍这次iOS7对程序后台运行进行了加强,但是仅仅是加强而已,要想像Android程序那样自由当然就别想了,苹果这么做主要还是出于电池使用时间考虑,但是这次的加强对大部分程序基本够用。转载 2017-04-29 20:27:52 · 644 阅读 · 0 评论 -
iOS7中的多任务II
【推送唤醒(Remote Notifications)】 在iOS6和之前,推送的类型是很单一的,无非就是显示标题内容,指定声音等。用户通过解锁进入你的应用后,appDelegate中通过推送打开应用的回调将被调用,然后你再获取数据,进行显示。这和没有后台获取时的打开应用后再获取数据刷新的问题是一样的。 在iOS7中这个行为发生了一些改变,我们有机会使设备在接收到远端推送后让系统唤醒设转载 2017-04-29 20:04:53 · 597 阅读 · 0 评论 -
[iOS]CocoaPods安装
首先安装Ruby运行环境:http://www.cnblogs.com/daguo/p/4097263.html然后再安装CocoaPods:http://blog.youkuaiyun.com/meegomeego/article/details/24005567转载 2015-06-05 10:36:58 · 578 阅读 · 0 评论 -
手把手教你ARC——iOS/Mac开发ARC入门和使用
本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by-hand/本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机转载 2014-07-15 19:38:34 · 1316 阅读 · 0 评论 -
__bridge,__bridge_transfer和__bridge_retained详解
Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoo转载 2014-07-15 19:31:24 · 1218 阅读 · 0 评论 -
自定义UITableViewCell的背景
UITableViewCell是一个很常用的View,通常我们都是直接使用它。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"CellIden转载 2012-08-06 12:32:33 · 1604 阅读 · 0 评论 -
iOS通过Quartz画矩形、文字、线
首先,获取上下文CGContextRef context =UIGraphicsGetCurrentContext();画无框矩形//设置矩形填充颜色:红色 CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); //填充矩形 CGContextFillRect(context, rec转载 2012-07-08 13:42:48 · 12603 阅读 · 1 评论 -
[iOS] iphone检测耳机插入/拔出
开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个:检测是否有声音输入设备当有多个声音输出设备时,指定声音输出设备检测耳机的插入和拔出第一个问题,对于iTouch和iPad等本身不带麦克风的设备,需要检查是否插入了带录音功能的耳机;对于iphone,由于其本身已近自带麦克风,所以相对容易。第二个问题,当在本身带有外放的设备上插入耳机等输出设备时,就出现了多个输出设转载 2012-04-09 20:48:54 · 13186 阅读 · 1 评论 -
[iOS]使用Audio Queue Services 播放和录制音频
要在iOS设备上播放和录制音频,苹果推荐我们使用AVFoundation框架中的AVAudioPlayer和AVAudioRecorder类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据。这给应用造成了很大的局限性。为了解决这个问题,我们就需要使用Audio Queue Services来转载 2012-03-20 12:42:16 · 21101 阅读 · 2 评论 -
[iOS]/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit code 1
使用xcode编译出错Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit code 1在网上找了好久,解释有各种原因,但是大多都是说重定义了变量,或者静态变量重名。若搜索这个工程找不到重定义的地方,则很有可能和我个人遇到的问题一样,个人总结了一下一下转载 2012-04-03 20:13:03 · 2999 阅读 · 0 评论 -
[iOS]后台工作队列:NSOperationQueue、NSOperation、NSInvocationOperation
NSOperationQueue1,operationQueue 里边应该可以同时添加多个operation吧?是的,本来operationQueue的目的就是多线程管理,那多线程,可不只是一个线程。而且我们可以设置这个队列每次被处理的“操作”数量 NSOperationQueue *aQ = [[NSOperationQueue alloc] init];转载 2012-04-03 09:33:35 · 8119 阅读 · 2 评论 -
[iOS] UIFont 设置字体
label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24]; 字体名如下:Font Family: American TypewriterFont: AmericanTypewriterFont: AmericanTypewriter-BoldFont Family: Appl转载 2012-04-02 18:28:27 · 68420 阅读 · 5 评论 -
[iOS] CFRunLoop示例总结
首先看两个runloop的示例第一个:#include static void _perform(void *info __unused) { printf("hello\n"); } static void _timer(CFRunLoopTimerRef timer __unused, vo转载 2012-04-03 10:52:44 · 7903 阅读 · 0 评论 -
[iOS] Code Sign error: Provisioning profile XXXX can't be found
如果你更新了profile,再编译iphone项目,发现下面的错误,那你无论如何clean也不会成功,那真是让人恼火阿 这时候,先copy上面那行出错信息,然后关闭这个项目,打开finder到你的项目文件xxxx.xcodeproj上面按鼠标右键,选择Show Package Contents菜单,在新打开的finder的,找到project.pbxproj,使用一个文转载 2012-04-03 14:25:09 · 1101 阅读 · 0 评论 -
[iOS]通过UIView对象获取该对象所属的UIViewController
@interface UIView (Extend) - (UIViewController *)viewController; @end @implementation UIView (Extend) - (UIViewController*)viewController { for (UIView* next = [self superview]; n转载 2012-03-15 10:11:49 · 5671 阅读 · 0 评论 -
[iOS] NSInvocation简单使用
在 iOS中可以直接调用 某个对象的消息 方式有2中一种是performSelector:withObject:再一种就是NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作NSInvocation可以处理参数、返回值。会j转载 2012-04-11 13:16:40 · 4504 阅读 · 0 评论 -
[iOS] performSelectorOnMainThread支持多个参数
iOS 的 NSObject对象提供了一种在不同线程中执行其方法的机制。最常见的是需要在主线程即UI线程中去执行一些方法performSelectOnMainThread:withObject:waitUntilDone:但是这个默认的方法只支持一个参数。performSelector:withObject:withObject:这个不是在主程线中运行的…只能依靠cat转载 2012-04-11 13:11:41 · 8041 阅读 · 0 评论 -
NSRunloop 的用法
今天突然才之间才意识到NSTimer这样的运行方式,是在多线程中实现的循环还是在主线程中去实现的呢。当然不可能是在主线程中的while那么简单,那样什么都干不了,简单看了下NSTimer是以同步方式运行的。时间到了,消息发出后,ontimer的函数是在主线程上调用的。我们会经常看到这样的代码:- (IBAction)start:(id)sender {转载 2012-07-08 13:35:41 · 2165 阅读 · 0 评论 -
[iOS] iPad与iPhone上各种标准控件的大小
iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iPhone说明。Sizes of iPhone UI ElementsElementSize (in points)Window (including status bar)320 x 480 ptsStatus Bar转载 2012-05-25 21:38:26 · 4062 阅读 · 0 评论 -
[iOS] Xcode 4 Missing file 警告的解决办法
These solutions are way too difficult. The problem is that you have removed the project from filesystem but SVN still thinks they are there. Detaching project from SVN will work, the same for removi转载 2012-05-23 16:05:19 · 8412 阅读 · 0 评论 -
[iOS]设置Xcode 4同时支持旧版iOS设备(armv6),并兼容iPhone和iPad
Xcode 4的Architectures设置默认只有armv7,也就是新的iOS设备,包括iPhone 3GS、iPhone 4、iPhone 4s、iPad、iPad 2等,而iPhone、iPhone 3G、iPod Touch、iPod Touch 2属于armv6架构。一、使兼容armv6和armv7的步骤如下:PROJECT -> Info -> iOS Deplo原创 2012-05-19 19:03:05 · 7717 阅读 · 0 评论 -
[iOS]使用NSProxy实现代理模式
// MyProxy.h#import@interface MyProxy :NSProxy { NSObject *object;}- (id)transformToObject:(NSObject *)anObject;@end// MyProxy.m#import"MyProxy.h"@impl原创 2012-05-09 09:29:03 · 13051 阅读 · 3 评论 -
[ios] xcode 4.2 创建 adhoc 发布应用测试方法
AdHoc实际主要就是你可以发布版本,通过签名Profile指定这个版本能在哪些设备上运行(不超过100个)。这样你可以把版本直接发给你的测试人员,不需要经过AppStore。起到Beta测试的作用。 第一步:取得目标机器的UDID(Unique Device Identifier )。 启动iTune,连接设备。选取设备,在Summary页面,可以看到Serial Number(序列转载 2012-05-07 11:56:17 · 3196 阅读 · 0 评论 -
[iOS] Xcode 4透過Ad-Hoc發佈App給其它裝置測試使用
先前曾分享過,透過憑證的設定,將Xcode開發好的App,同步到開發者行動裝置中,來進行除錯與測試,但由於一般的開發者,很難手邊同時有iPhone 3Gs、iPod Touch、iPhone 4、4s...等,這時就得靠平常的生活外交了,但總不可能把朋友手機一一的借來測試,所以這時候最好的辦法,就是將寫好的App發佈出來,安裝到各式不同的裝置上來進行測試,看是否都能正常的運作,這時就得透過Ad-H转载 2012-05-07 14:25:03 · 12853 阅读 · 0 评论