20130220

1-http://blog.csdn.net/baxiaxx/article/details/7878338

performSelector延迟使用

2-http://blog.csdn.net/baxiaxx/article/details/7878110

~~~performSelector内存泄露

performSelector是一个很有用的函数,跟它打过不少交道,经过血与泪的教训,总结一下它的使用如下:

使用前先检测一下,

SEL testSelector = @selector(test:);   

 if([tester respondsToSelector:testSelector])  

  {  

          //如果响应就执行

          [tester test:@"invoke test method"];  

  }

使用后,如果有必要,需要显示的调用cancelPreviousPerformRequestsWithTarget:selector:object: ,否则有可能产生内存泄露,而且这种内存泄露很难发现,因为它并不违反任何规则,所以一定要注意!

self performSelector:@selector(method1:) withObject:self.tableLayer afterDelay:3

tableLayer的引用计数加1,执行完这个方法时,还会将tableLayer的引用计数减1

多次调用, 已经被调用但还没有执行,==》》内存泄露

3-http://www.cnblogs.com/geraldzhang/archive/2011/11/12/2246453.html

~~delegate属性使用assign的原因。

所有的引用计数系统,都存在循环应用

a[UITableViewController]创建并引用b[UITableView].

b[delegatea]创建并引用c. -- delegate retain了 就无法释放这两个对象

c创建并引用b.

releasea

bc永远留在内存中。

循环引用而产生的内存泄露也是Instrument,自己在设计使用delegate模式时,也要注意这点

~~~~~

iPhone开发中,动态调用类和方法:

NSClassFromString

NSSelectorFromString

正常来说,

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

id myObj = [[MySpecialClass alloc] init];

是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。

因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。

比如在iPhone中,NSTask可能就会出现这种情况,所以在你需要使用NSTask时,最好使用:

[[NSClassFromString(@"NSTask") .....]]

而不要直接使用[NSTask ...]这种写法。

NSClassFromString的好处是:

1 弱化连接,因此并不会把没有的Frameworklink到程序中。

2 不需要使用import,因为类是动态加载的,只要存在就可以加载。

for (int c=0; c<[classNames count]; c++) {

NSString *className=[classNames objectAtIndex:c];

id class=[[NSClassFromString(className) alloc] init];

for (int i=0; i<[params count]; i++) {

[class performSelector:NSSelectorFromString([NSString stringWithFormat:@"setA%i",i])];

}

}

4-http://davychen.blog.51cto.com/3283671/653001

--init初始化Controler,LazyLoad思想

--loadView,view为nil时,加载View

手动画Views,无xib

当有xib时候, 不调用loadView

viewDidLoad做后续加载,可以放数据初始化等

生命周期

+ (id)alloc 

+ (id)allocWithZone:(NSZone *)zone 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

[ // 多选一

- (id)init 

 - (id)initWithCoder:(NSCoder *)aDecoder 

]

- (void)loadView 

- (void)viewDidLoad

//每次进入调用

- (void)viewWillAppear:(BOOL)animated 

- (void)viewDidAppear:(BOOL)animated 

5-http://blog.csdn.net/genios/article/details/7821133

xcode 4.5 new feature __ ios6 新特性

@‘X’--NSNumber

@{}--NSDictionary

@[]--NSArray

mutableCopy --Mutable版本

_songs[idx]--NSArray

_storage[key]--NSDictionary

~~CollectionView

照片墙显示 【delegate类似tableview】

~~embed segue

instantiateViewControllerWithIdentifier

container view

视图控制器添加一个子视图控制器

原文地址:https://www.cnblogs.com/tiechui/p/2919102.html