摘要: for (int i = 0; i<10000000; i++) { NSString *string = @"Abc"; // NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; string = [string lowercaseString]; string = [string stringByAppendingString:@"ABC"]; // [pool release]; }无论是你后台开启了多少应用,只需要这段代码一跑,最终结果就是所有的程序都crash.然后内存就 阅读全文
posted @ 2012-05-09 13:19 dcty 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 本文出自 “林家男孩” 博客,请务必保留此出处http://bj007.blog.51cto.com/1701577/5389951 Selector是Objective-C一个非常强大的特性,合理使用Selector可以大大简化实现并避免重复代码。但NSObject提供 的performSelector最多只支持两个参数,对于两个以上的参数就无能为力了。一番调查后针对NSObject增加了如下扩展,使得 performSelector可以支持传入参数数组。多个参数就不再是问题了。 2 @interface NSObject (Addition) 3 4 - (id)performSelec. 阅读全文
posted @ 2012-04-06 15:47 dcty 阅读(436) 评论(0) 推荐(0) 编辑
摘要: From http://willonboy.tk/?p=971主要利用ObjectiveC的C API中函数:void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)id objc_getAssociatedObject(id object, const void *key)原理详细参见官方的ObjectiveC Runtime Reference.好了,现在直接写怎么做了.1.在定义类别之前, 引入runtime.#import <objc/run 阅读全文
posted @ 2012-03-12 16:29 dcty 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 以前的做法和这个比起来简直就是xxxx,今天看官方的参考库又学了一招~以前的实现效果和这个是一样,不过代码上比这个多了点程序清单5-1处理键盘通告// Call this method somewhere in your view controller setup code.- (void)registerForKeyboardNotifications{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) na... 阅读全文
posted @ 2012-03-11 18:06 dcty 阅读(4080) 评论(1) 推荐(0) 编辑
摘要: 如果直接判断 if (touch.tapCount == 1)立即调用某个方法的话,会出现出乎意料的情况,不过今天看到苹果的iPhone应用开发指南里面,清楚的描述了如何解决这个问题。程序清单3-1检测双击手势- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event{ UITouch *touch = [touches anyObject]; if ([touch tapCount] == 2) { CGPoint tapPoint = [theTouch locationInView:... 阅读全文
posted @ 2012-03-11 17:15 dcty 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 有效地使用内存由于iPhone OS的虚存模型并不包含磁盘交换区空间,所以应用程序在更大程度上受限于可供使用的内存。对内存的大量使用会严重降低系统的性能,可能导致应用程序被终止。因此,在设计阶段,您应该把减少应用程序的内存开销放在较高优先级上。应用程序的可用内存和相对性能之间有直接的联系。可用内存越少,系统在处理未来的内存请求时就越可能出问题。如果发生这种情况,系统总是先把代码页和其它非易失性资源从内存中移除。但是,这可能只是暂时的修复,特别是当系统在短时间后又再次需要那些资源的时候。相反,您需要尽可能使内存开销最小化,并及时清除自己使用的内存。本文的下面部分将就如何有效使用内存和在只有少量内 阅读全文
posted @ 2012-03-11 16:49 dcty 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 经过测试,1,2,3的写法效果是一模一样的,4的写法最糟糕补充一下:创建一个数组,把animal添加到数组,然后查看内存的变化,效果令人大吃一惊笔者苦逼的使用第一种方法 1 #import <Foundation/Foundation.h> 2 3 @interface Animal : NSObject 4 { 5 NSString *_name; 6 NSInteger _age; 7 } 8 9 @property (nonatomic,copy) NSString *name;10 @property (nonatomic,assign) NSInteger age... 阅读全文
posted @ 2012-03-11 00:14 dcty 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 幕后:保留计数所有权策略是在调用retain方法后通过引用计数—通常被称为“保留计数”—实现的。每个对象都有一个保留计数。当您创建一个对象时,该对象的保留计数为1。当您向一个对象发送retain消息时,该对象的保留计数加1。当您向一个对象发送release消息时,该对象的保留计数减1。当您向一个对象发送autorelease消息时,该对象的保留计数会在将来的某个阶段减1。如果一个对象的保留计数被减为0,该对象就会被回收(请参考“回收对象”)。重要:通常您不必显式地查询对象的保留计数是多少(参考retainCount)。其结果往往容易对人产生误导,因为您可能不知道您感兴趣的对象由何种框架对象保留 阅读全文
posted @ 2012-03-10 23:09 dcty 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1 [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应 2 3 //添加监听 4 [[NSNotificationCenter defaultCenter] addObserver:self 5 selector:@selector(sensorStateChange:) 6 ... 阅读全文
posted @ 2012-02-28 21:36 dcty 阅读(2137) 评论(2) 推荐(1) 编辑