`
文章列表
创建基于nib的HelloWorld工程     创建工程   启动Xcode,点击File→New→Project菜单,在打开的Choose a template for your new project界面中,选择Single View Application工程模板     然后点击Next按钮,随即出现界面。        这里我 ...
应用测试方法 应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器ViewController.m中有那些方法需要测试,然后再来设计测试用例。 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (IBAction)onClick:(i ...
应用测试和逻辑测试   添加OCUnit到工程时候,我们提到过,应用测试(Application Testing)和逻辑测试(Logic Testing)两个概念,它们并非是OCUnit中的概念,而是单元测试中概念。应用测试是对整个应用程序进行的测试,设计测试用例时候要考虑到运行环 境等因素,例如在测试JavaEE时候需要考虑Web容器和EJB容器等环境问题。而逻辑测试则是轻量级的,只测试某个业务逻辑对象的方法或算法正确性。   编写OCUnit测试方法   每一个单元测试用例对应于测试类中的一个方法,因此测试类分为:逻辑测试类和应用测试类,在设计测试用例时候,逻辑测试和应用测试也 ...
使用OCUnit测试框架iOS单元测试框架   原则上,是否使用测试框架都不会影响单元测试结果,但是“工欲善其事,必先利其器”使用单元测试框架更便于我们测试和分析结果。   主要的iOS单元测试框架有:   OCUnit,是开源测试框架,与Xcode工具集成在一起使用非常方便,测试报告以文本形式输出到输出窗口;   GHUnit,是开源测试框架,它可以将测试报告以应用形式可视化输出到设备或模拟器上,也可以以文本形式输出到输出窗口;GHUnit可以测试OCUnit编写的测试用例;   OCMock,是开源测试框架,它主要为测试提供Mock对象(伪对象)。   添加OCUn ...
北京时间10月12日下午消息,据美国科技博客BusinessInsider报道,在今年9月推出iOS 6后,苹果开始通过一项名为IFA或IDFA的新技术追踪用户,发布精准广告。 在此之前,广告主原本可以借助UDID识别码追踪iPhone用户,但苹果后来禁用 ...
在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,XmlNode以树形结构进行XML的数据封装,使用的时候按照树形结构进行数据的获取。 XmlNode结构如下: 01    @ interface XmlNode : NSObject { 02 03    } 04    @property(nonatomic,retain)NSMutableDictionary *attributes;//属性 ...
ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); for(int i = 0; i < CFArrayGetCount(results); i++) { ABRecordRef person = CFArrayGetValueAtIndex(results, i); //读取firstname NSStri ...
APNs  --Apple Push Notification Service APNs  苹果推送服务器Device  安装带有推送服务程序的iPhone手机Provider  程序服务器,把需要推送的信息发给 APNsDeviceToken  在Device第一次连接APNs时,由APNs生成的经过加密的连接认证信息。在以后的连接中,无论时Provider到APNs还是APNs到Device 都需要 DeviceToken作为认证。Payload  需要推送的消息的主体内容。alert-alert消息的消息体,按键标题等badge-显示在程序icon右上角的数字,sound-声 ...
在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制。 这篇文章将介绍一下如何在iOS设备中进行缓存,本文先介绍一下将内容缓存到内存中,下一篇文章就介绍一 ...
通过代码块(block)功能,你就能像对待对象一般,指定要在方法和函数中传递任意代码部分。 代码块的声明: int main (int argc, const char * argv[]) { @autoreleasepool { void (^myBlock) (NSString *x);//声明变量 /* 代码块是存储在一个变量 ...
一、获取系统所支持的国际化信息 在国际化之前,你可以在iphone中的”设置->通用->多语言环境->语言”中来查看你的iphone支持哪些语言,当然也可以写一段代码测试一下你的iphone都支持哪些语言.测试代码如下: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; NSLog(@”%@”, languages); 注:NSU ...
01    //获取当前时间 02    NSDate *now = [NSDate date]; 03    NSLog(@”now date is: %@”, now); 04 05    NSCalendar *calendar = [NSCalendar currentCalendar]; 06    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSe ...
多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。 本次介绍NSOperation的子集,简易方法的NSInvocationOperation: @implementation MyCustomClass - (void)launchTaskWithData:(id)data { //创建一个NSInvocationOperation对象,并初始化到方法 //在这里,selector参数后的值是你想在另外一个线程中运行的方法(函数,Me ...
object-c的多线程如java的多线程一样方便可靠。 一、线程创建与启动 线程创建主要有二种方式: [cpp] view plaincopy - (id)init; // designated initializer - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument; 当然,还有一种比较特殊,就是使用所谓的convenient method,这个方法可以直接生成一个线程并启动它,而且无需为线程的清理负责。这个方法的接口是: [cpp]  view plain copy + ...
对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的。 内存控制里面有很多门道,在这里分析一下 viewDidUnload 和 dealloc 的区别,关于这两者的区别的文章很多,但是大都是摘抄和翻译官方文档,有的也只是简单的说两句,并没有详细说出两者具体的区别。 在了解两者之间的区别,首先要知道 view 的生命周期,google 里面有很多文章,可以先去搜一下,这里就不详解了。 顾名思义  viewDidUnload 就是当 view 被卸载以后执行的语句,它与 viewDidLo ...
Global site tag (gtag.js) - Google Analytics