• 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

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

  • 相关阅读:
    scroller,,list里面滚动到最后,,再添加10条数据
    Egret ,dataGroup,,,tabBar,,,List的区别
    自我回答,问题3:Scroller的属性 scrollPolicyV怎么无效呢,,也就是 scrollPolicyV设置为on,但是并没有显示滚动条
    自我回答,问题2:比如有个历史记录,,然后左边有个按钮btnleft,,右边有个按钮btnright,点击对应按钮,,就会有对应历史记录推进,或者后退
    自我回答,问题1:八个按钮(btn0-btn8),,下面有加分8个bitmap(bitmap0-8),,点击按钮对应有bitmap的值+=1
    js生成 1-100 不重复随机数
    laravel 的passport Oauth 认证登录请求 的 oauth_token 重置
    phpunit 测试指定目录下的测试类
    [SymfonyComponentDebugExceptionFatalThrowableError] Class 'Dingo' not found
    laravel 观察器 模型绑定 方法的关系
  • 原文地址:https://www.cnblogs.com/tiechui/p/2919102.html
Copyright © 2020-2023  润新知