码迷,mamicode.com
首页 > 其他好文 > 详细

performSelector

时间:2014-10-17 13:22:18      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   使用   for   

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

一、- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;

知识点:这个方法是单线程的,也就是说只有当前调用此方法的函数执行完毕后,selector方法才会被调用。

- (void)mainMethod
{   
    [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1];

    NSLog(@"调用方法==开始");
    
    sleep(5);
    
    NSLog(@"调用方法==结束");
}

- (void)delayMethod
{
    NSLog(@"执行延迟方法");
}

执行结果(注意log打印的顺序):

  调用方法==开始
  调用方法==结束
  执行延迟方法

 

 

二、- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

多线程,YES:一直等aSelector 的方法执行完,才接着向下执行

 

三、performSelector的内存问题

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

最后总结:

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

使用前先检测一下,

SEL testSelector = @selector(test:);   

 if([tester respondsToSelector:testSelector])  

  {  

          //如果响应就执行

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

  }

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

performSelector

标签:style   blog   http   color   io   os   ar   使用   for   

原文地址:http://www.cnblogs.com/wyqfighting/p/4030657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!