摘要:
从2013-5-1日开始苹果就禁止对UUID的应用的通过了。所以我们需要用一些办法替换,下面我就是用keychain的访问替换掉UUID的。那么,关于Keychain的应用,Apple提供了一个叫GenericKeychain的例子程序,在这里:http://download.csdn.net/detail/pearlhuzhu/5699667,其中封装了一个简化Keychain操作的类:KeychainItemWrapper,可以拿来直接使用。1、首先应该导入库文件:Security.framework 且需要把文件KeychainItemWrapper.h和KeychainItemWrap 阅读全文
摘要:
obj.mutableStr = (NSMutableString *)[[NSMutableString alloc] initWithString:@"Hello"]; NSLog(@"%@", obj.mutableStr); [obj.mutableStr appendString:@"World!"]; // crash here: Attempt to mutate immutable object with appendString: NSLog(@"%@", obj.mutableStr);我这个属 阅读全文
摘要:
[self.imageDownloadsInProgress setObject:iconDownloader forKey:[NSNumber numberWithInteger:tag]];字典setobject时候不能为nil,否则crash! 阅读全文
摘要:
使用如下的方法可以裁减的同时保证了不丢失像素。- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ // Set appIcon and clear temporary data/image UIImage *image = [[UIImage alloc] initWithData:self.activeDownload]; if (image.size.width != kAppIconSize || image.size.height != kAppIconSize) { //set the frame f.. 阅读全文
摘要:
这篇文章还可以在这里找到 英语以下是对上面代码的注解:导入PhotoRecord.h文件,这样你就可以在下载成功后,单独地设置PhotoRecord变量的图片属性(image property)。如果下载失败,设定它的failed值为YES。申明一个delegate,这样一旦操作完成了,你可以通知调用者(caller)。为了方便起见,申明了indexPathInTableView变量,这样一旦操作结束了,调用者就会有一个属于操作的引用。申明一个初始化方法。在你的delegate方法中,将整个类作为对象传递回给调用者,这样调用者就可以访问indexPathInTableView和 photoRe 阅读全文
摘要:
这篇文章还可以在这里找到 英语学习如何在你的app中使用NSOperations!这篇博客是由iOS个人开发者Soheil Moayedi Azarpour发布的。每个人都会在使用iOS或者Mac app,点击按钮或者输入文本时,有过让人沮丧的经历,突然间,用户交互界面停止了响应。你真幸运 – 你只能盯着沙漏或者旋转的风火轮一段时间直到能够再次和UI界面交互为止!挺讨厌的,不是吗?在一款移动端iOS程序中,用户期望你的app可以即时地响应他们的触摸操作,然而当它不响应时,app就会让人觉得反应迟钝,通常会导致不好的评价。然而说的容易做就难。一旦你的app需要执行多个任务,事情很快就会变得复杂起 阅读全文
摘要:
1、简介:1.1 iOS有三种多线程编程的技术,分别是:1.、NSThread2、Cocoa NSOperation(iOS多线程编程之NSOperation和NSOperationQueue的使用)3、GCD全称:Grand Central Dispatch(iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用)这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。这篇我们主要介绍和使用NSThread,后面会继续2、3 的讲解和使用。1.2 三种方式的有缺点介绍:NSThread:优点:NSThread 比其他两个 阅读全文
摘要:
iOS4已经直接支持blocks,很有必要学习一下。在ios中,将blocks当成对象来处理,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其 本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义:[cpp] view plaincopyint(^myBlock)(inta,intb)=^(inta,intb){returna+b;};定义了一个名为myBlock的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现,是不是 阅读全文
摘要:
多线程开发是一件需要特别精心的事情,即使是对有多年开发经验的工程师来说。为了能让初级开发工程师也能使用多线程,同时还要简化复杂性。各种编程工具提供了各自的办法。对于iOS来说,建议在尽可能的情况下避免直接操作线程,使用比如NSOperationQueue这样的机制。可以把NSOperationQueue看作一个线程池,可往线程池中添加操作(NSOperation)到队列中。线程池中的线程可看作消费者,从队列中取走操作,并执行它。你可以设置线程池中只有一个线程,这样,各个操作就可以认为是近似的顺序执行了。为什么说是近似呢,后面会做解释。编写最简单的示例先写个最简单的示例。编写一个NSOperat 阅读全文
摘要:
例子一:-(void)setUpStreamForFile:(NSString*)path{//iStreamisNSInputStreaminstancevariableiStream=[[NSInputStreamalloc]initWithFileAtPath:path];[iStreamsetDelegate:self];[iStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];[iStreamopen];} 上面的例子显示,当你创建对象之后你应该设置其delegate。当把NSIn 阅读全文