1.UIWebView内存泄漏解决办法
如果你的iPhone应用程序嵌入UITableview或者直接发出HTTP请求与NSURLConnection的时候,都需要控制内存使用量。Web请求可以使用大量的内存,您可能会发现内存占用量的增长和增长的越多,使用的应用程序。其中一个我们在应用程序中看到的高内存使用率的主要原因是未能明确配置NSURLCache。
- 首先,让我们配置NSURLCache时,应用程序启动时(任何请求之前取得),高速缓存,所以我们可以控制它的内存使用量。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
int cacheSizeMemory = 4*1024*1024; // 4MB
int cacheSizeDisk = 32*1024*1024; // 32MB
NSURLCache *sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease];
[NSURLCache setSharedURLCache:sharedCache];
}
上面配置了4MB的内存缓存和32MB磁盘高速缓存。磁盘高速缓存将驻留在默认的iOS缓存目录的子目录所谓的“nsurlcache”里面
- 然后,我们需要相应内存警告。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
2.指针问题
int array[5] = {1,2,3,4,5};
int *p = &array[0];
int max = MAX(*p++, 1);
printf("%d %d\n",max,*p);
int *ptr = (int *)(&array + 1);
printf("%d,%d\n",*(array + 1),*ptr);
int a = -1, b = 4, k;
k = (a++<=0) && (!(b--<=0));
printf("%d%d%d\n",k,a,b);
结果:1 2
2,不确定
103
分析:
array表示数组首元素地址
&array表示数组地址,等于数组首元素地址
&array[i]表示数组第i+1个元素的地址
(array + 1) 表示从数组首元素偏移sizeof(int)
(&array + 1) 表示从数组地址偏移sizeof(int [])
(&array[i] + 1) 表示从数组第i+1个元素地址偏移sizeof(int)
++在变量(a)前面时,a先加1,然后参与运算
++在变量(a)后面时,a先参与运算,然后a加1
网友评论