- 博客(55)
- 收藏
- 关注
转载 iOS常用宏定义
//// MacroDefinition.h// MacroDefinitionDemo//// Created by 新风作浪 on 13-6-9.// Copyright (c) 2013年 SpinningSphere Labs. All rights reserved.//#ifndef MacroDefinition_h#define Macr
2013-12-23 15:25:21 631
转载 ASIHTTPRequest-Debug选项
ASIHTTPRequest提供少量的有助于调试request行为的宏标记。这些宏可以从ASIHTTPRequestConfig.h文件中找到。当打开这些标志时,request将会打印一些信息到控制台,显示它们正在做什么。DEBUG_REQUEST_STATUS打印request的生命周期的所有信息,开始,结束上载,结束下载。DEBUG_THROTTLING打印request使
2013-10-15 09:25:49 571
转载 ASIHTTPRequest-其他特性
设置user agent这样设置用户代理:[ASIHTTPRequest setDefaultUserAgentString:@"MyApp 1.0"]如果不设置user agent,ASIHTTPRequest会为你创建一个。例如(Mac OS程序):My Application 1.0 (Macintosh; Mac OS X 10.5.7; en_GB)你也可以为每个re
2013-10-15 09:24:50 592
转载 ASIHTTPRequest-使用代理连接
ASIHTTPRequest检测系统的proxy设置并自动将proxy用于request。从1.0.6版本开始,它还支持PAC文件和要求授权的proxy。默认情况下,ASIHTTPRequest将尝试自动检测proxy设置。当然,你可以看自己手动设置:// 手动设置代理服务器NSURL *url = [NSURL URLWithString:@"http://www.dreamingwi
2013-10-15 09:24:23 552
转载 ASIHTTPRequest-客户端证书支持
有时服务器要求提供客户端证书,从1.8版本开始,你可以随request发送证书。// Will send the certificate attached to the identity (identity is a SecIdentityRef)[request setClientCertificateIdentity:identity]; // Add an additional c
2013-10-15 09:22:37 726
转载 ASIHTTPRequest-流量控制
从1.0.7版本开始,ASIHTTPRequest可以控制流量,使得所有request的流量不会超过用户定义的限制范围。这可以使得发送/接收大量数据的iphone程序更容易通过苹果的app store的审核。流量是由一个全局的数量限制(字节)来控制的——每秒钟可以传送多少流量的数据。所有request共享这个限制。在发送或接收数据时,ASIHTTPRequest保持追踪上一秒所发送/接收的数据
2013-10-15 09:22:08 578
转载 ASIHTTPRequest-使用download cache
从1.8版本开始,ASIDownloadCache和ASICacheDelegate的API改变了,你可能需要修改你的代码。尤其是,cache策略的可用选项发生了改变,你现在可以对单一request使用结合的cache策略ASIHTTPRequest可以自动缓存下载的数据。在很多情况下这很有用:当你离线时,你无法再次下载数据,而你又需要访问这些数据从上次下载这些数据后,你只想在
2013-10-15 09:21:49 641
转载 ASIHTTPRequest-直接读取磁盘数据流的请求体
从0.96版本开始,ASIHTTPRequest可以使用磁盘上的数据来作为请求体。这意味着不需要将文件完全读入内存中,这就避免的当使用大文件时的严重内存消耗。使用这个特性的方法有好几种:ASIFormDataRequestsNSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"];ASIFormDataReq
2013-10-15 09:20:57 576
转载 ASIHTTPRequest-断点续传(下载)
从0.94版本开始,ASIHTTPRequest可以恢复中断的下载- (IBAction)resumeInterruptedDownload:(id)sender{ NSURL *url = [NSURL URLWithString: @"http://www.dreamingwish.com/wp-content/uploads/2011/10/asihttprequest-a
2013-10-15 09:20:35 542
转载 ASIHTTPRequest-数据压缩
使用gzip来处理压缩的响应数据从0.9版本开始,ASIHTTPRequest会提示服务器它可以接收gzip压缩过的数据。许多web服务器可以在数据被发送之前压缩这些数据——这可以加快下载速度减少流量使用,但会让服务器的cpu(压缩数据)和客户端(解压数据)付出代价。总的来说,只有特定的几种数据会被压缩——许多二进制格式的文件像jpeg,gif,png,swf和pdf已经压缩过他们的数据了
2013-10-15 09:19:52 537
转载 ASIHTTPRequest-Cookie的使用
持久化cookieASIHTTPRequest允许你使用全局存储来和所有使用CFNetwork或者NSURLRequest接口的程序共享cookie。如果设置useCookiePersistence为YES(默认值),cookie会被存储在共享的 NSHTTPCookieStorage 容器中,并且会自动被其他request重用。值得一提的是,ASIHTTPRequest会向服务器发送其他
2013-10-15 09:19:10 492
转载 ASIHTTPRequest-身份验证
你可以查阅ASIHTTPRequest授权流程图来了解ASIHTTPRequest如何找到授权凭据,并将授权凭据应用到request上。为URL指定要使用的用户名和密码NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"];ASIHTTPRequest *request = [ASIHTTPRequest re
2013-10-15 09:16:47 522
转载 ASIHTTPRequest-进度追踪
每个ASIHTTPRequest有两个delegate用来追踪进度:downloadProgressDelegate 下载)uploadProgressDelegate (上载).进度delegate可以是NSProgressIndicators (Mac OS X) 或者 UIProgressViews (iPhone).ASIHTTPRequest会自适应这两个class的行为。你
2013-10-15 09:15:42 522
转载 ASIHTTPRequest-下载数据
将服务器响应数据直接下载到文件如果你请求的资源很大,你可以直接将数据下载到文件中来节省内存。此时,ASIHTTPRequest将不会一次将返回数据全部保持在内存中。ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request setDownloadDestinationPath:@"/Users/ben/De
2013-10-15 09:15:15 529
转载 ASIHttpRequest-发送数据
发送数据设定request头ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request addRequestHeader:@"Referer" value:@"http://www.dreamingwish.com/"];使用ASIFormDataRequest POST表单通常数据是以’a
2013-10-15 09:14:31 775
转载 ASIHttpRequest-创建和执行request
同步请求同步请求会在当前线程中执行,使用error属性来检查结束状态(要下载大文件,则需要设定downloadDestinationPath来保存文件到本地):- (IBAction)grabURL:(id)sender{ NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"]; ASIHTTPReque
2013-10-15 09:13:37 580
转载 ASIHttpRequest库简介、配置和安装
使用ASIHTTPRequest可以很方便的进行一下操作:同步/异步方式下载数据定义下载队列,让队列中的任务按指定的并发数来下载(队列下载必须是异步的)提交表单,文件上传处理cookie设置代理上下载进度条重定向处理请求与响应的GZIP验证与授权等等,只要跟HTTP有关,只有你想不到的,没有她做不到的~配置方法:ASIHTTPRequestConfig.hASIHTTPRe
2013-10-15 08:51:07 620
原创 升级到iOS5后ASIHttpRequest库问题及解决方法
由于正式版的iOS5出来了,所以我也试着去升级了。于是下载了最新的Xcode,才1.7G左右,比以往的安装包要小许多。升级Xcode后,打开以前创建的工程, 运气好,一个错误都没有,程序也能正常跑起来。由于我程序中用了ASIHttpRequest这个库,让我发现了一个小问题,就是ASIAuthenticationDialog这个内置对话框在网络有代理的情况下出现,然后无论点cancle或是
2013-10-15 08:49:46 907
转载 block介绍(四)揭开神秘面纱(下)
内存管理的真面目 objc层面如何区分不同内存区的blockBlock_private.h中有这样一组值:/* the raw data space for runtime classes for blocks *//* class+meta used for stack, malloc, and collectable based blocks */BLOCK_E
2013-10-15 08:42:54 785
转载 block介绍(三)揭开神秘面纱(上)
上一篇我们总结了各个情况下,block及其引用到的内存位置情况。接下来几篇,我们将剖析编译器转码以及运行时库源码来一探block的究竟。 block到底是什么我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现我们来看看最简单的一个block:图一 这个block仅仅打印栈变量i和j的值,其被clang转
2013-10-14 17:52:05 675
转载 Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。一、block放在哪里我们针对不同情况来讨论block的存放位置:1.栈和堆以下情况中的block位于堆中:1234567891011121
2013-10-14 17:50:24 609
转载 Block介绍(一)基础
一、概述Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身先看一个比较简单的Block例子:int multiplier = 7;int (^myBlock)(int) = ^(int num) { return nu
2013-10-14 17:43:17 549
转载 iOS多线程编程指南(附录)
本附录描述了Mac OS X和iOS上面一些关键的高级线程安全的框架。本附录的信息有可能会发生改变。Cocoa在Cocoa上面使用多线程的指南包括以下这些:不可改变的对象一般是线程安全的。一旦你创建了它们,你可以把这些对象在线程间安全的传递。另一方面,可变对象通常不是线程安全的。为了在多线程应用里面使用可变对象,应用必须适当的同步。关于更多信息,参阅”可变和不可变对比”。许多对象在
2013-10-14 17:34:40 578
转载 iOS多线程编程指南(四)线程同步
第四章 线程同步应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有可能以意想不到的方式互相干扰。比如,一个线程可能覆盖其他线程改动的地方,或让应用程序进入一个未知的潜在无效状态。如果你幸运的话,受损的资源可能会导致明显的性能问题或崩溃,这样比较容易跟踪并修复它。然而如果你不走运,资源受损可能导致微妙的错误,这些错误不会立即显现出来,而是很久
2013-10-14 17:32:53 843
转载 iOS多线程编程指南(三)Run Loop
Run LoopsRun loops是线程相关的的基础框架的一部分。一个run loop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。Run loop的管理并不完全自动的。你仍然需要设计你的线程代码在合适的时候启动run loop并正确响应输入事件。Cocoa和Core Fundatio
2013-10-14 17:22:31 660
转载 iOS多线程编程指南(二)线程管理
线程管理Mac OS X和iOS里面的每个进程都是有一个或多个线程构成,每个线程都代表一个代码的执行路径。每个应用程序启动时候都是一个线程,它执行程序的main函数。应用程序可以生成额外的线程,其中每个线程执行一个特定功能的代码。当应用程序生成一个新的线程的时候,该线程变成应用程序进程空间内的一个实体。每个线程都拥有它自己的执行堆栈,由内核调度独立的运行时间片。一个线程可以和其他线程或其他
2013-10-14 17:21:14 642
转载 iOS多线程编程指南(一)关于多线程编程
第一章 关于多线程编程多年来,计算机的最大性能主要受限于它的中心微处理器的速度。然而由于个别处理器已经开始达到它的瓶颈限制,芯片制造商开始转向多核设计,让计算机具有了同时执行多个任务的能力。尽管Mac OS X利用了这些核心优势,在任何时候可以执行系统相关的任务,但自己的应用程序也可以通过多线程方法利用这些优势。1.1 什么是多线程多线程是一个比较轻量级的方法来
2013-10-14 17:19:36 761
转载 GCD实战2:资源竞争
概述我将分四步来带大家研究研究程序的并发计算。第一步是基本的串行程序,然后使用GCD把它并行计算化。如果你想顺着步骤来尝试这些程序的话,可以下载源码。注意,别运行imagegcd2.m,这是个反面教材。。 原始程序我们的程序只是简单地遍历~/Pictures然后生成缩略图。这个程序是个命令行程序,没有图形界面(尽管是使用Cocoa开发库的),主函数如下: in
2013-10-14 17:17:06 683
转载 GCD实战一:使用串行队列实现简单的预加载
其主要思路是使用gcd创建串行队列,然后在此队列中先后执行两个任务:1.预加载一个viewController 2.将这个viewController推入代码如下:@implementation DWAppDelegate{ dispatch_queue_t _serialQueue; UINavigationController *_navController;}
2013-10-14 17:15:59 512
转载 GCD介绍(四): 完结
Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起,使用 dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外,这两个函数也可以用于dispatch source。一个要注意的地方是,dispatch queue的挂起是block粒度的。换句话说,挂起一个queue并不会将当前正在执行的
2013-10-14 17:13:57 721
转载 GCD介绍(三): Dispatch Sources
何为Dispatch Sources简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型?下面是GCD 10.6.0版本支持的事件:Mach port send right state changes.Mach port re
2013-10-14 17:13:00 508
转载 GCD介绍(二): 多核心的性能
概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局队列进入相同的工作线程池(除非你的用户队列的目标是主线程,但是为了提高运行速度,我们绝不会这么干)。
2013-10-14 17:11:28 514
转载 GCD介绍(一): 基本概念和Dispatch Queue
什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。除了代码的平行执行能力,GCD还提供
2013-10-14 17:09:14 571
原创 iOS7中UITableView的变化
1 .UITableViewCell取消了 cell addSubView这个方法,只能使用 cell.contentView addSubView这个方法。因此之前的项目在Xcode5上面运行可能会出现以前的cell上的button无法响应的情况,这时,只需要把这个方法改过来就行了,xib默认是使用 cell addsubview方法的。2 .UITableViewCell的定制。
2013-10-14 15:32:33 1287
原创 UITableView的基本知识讲解
1. UITableView的初始化 UITableView tableview= [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [tableview setDelegate:self]; [tableview setDataSource:self]; [self.
2013-10-14 15:29:01 1650
原创 iOS之NSBundle使用
bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件;(首先获得目录,才能使用里面的资源文件)(1)获得bundleNSBundle bundle = [NSBundle maiBundle];//获得资源文件;NSBundle otherBundle = [NSBundle bundleWithPath:@"~/.myA
2013-10-14 15:26:58 632
原创 iOS APP的图标尺寸、启动画面尺寸、宣传画面尺寸
1、启动画面的尺寸iPhone5和iPod touch5代:640*1136像素其他iPhone和iPod touch设备:640*960像素,320*480像素(标准分辨率)对于iPad的启动画面(隐藏状态栏时):横屏:2048*1536 像素,1024*768 像素竖屏:1536*2048像素,768*1024像素以上均为png格式。2、应用图标的尺寸I
2013-10-14 15:24:18 2133
原创 UIView与CAlayer
1.UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALay
2013-10-14 08:48:10 526
原创 NSTimer简单使用
1、初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)titarget:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;+ (NSTimer *)scheduledTimerWithTimeInterva
2013-10-12 17:13:29 559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人