首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS开发--performSelector调用和直接调用区别

下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结, [delegate imageDownloader...:self didFinishWithImage:image]; [delegate performSelector:@selector(imageDownloader:didFinishWithImage...:)withObject:self withObject:image]; 1、performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。...(此时程序崩溃);Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。...而使用performSelector时候,可以不用import头文件包含方法的对象,直接用performSelector调用即可。 代码如下: ? ? ? 打印结果: ?

1.8K60

iOS_多线程四:NSThread + performSelector + 总结

目录 一、NSThread 1、一些类方法 2、创建方式 (1)、alloc init创建,但是需要手动开启 (2)、初始化一个子线程,特点:自动开启,是类方法 (3)、performSelector隐式创建...(顺便说一下performSelector其他方法) 二、performSelector 1、afterDelay在子线程中未执行 2、实现:多次点击, 只执行最后一次 三、需要手动加锁(线程同步)(...detachNewThreadSelector:@selector(network:) toTarget:self withObject:@{@"name":@"moxiaohui"}]; } (3)、performSelector...隐式创建 (顺便说一下performSelector其他方法) 二、performSelector // 当前线程中执行 [self performSelector:@selector(network...:) withObject:@{@"name":@"moxiaohui"}]; // 同步 [self performSelector:@selector(network:) withObject:

39830

block与GCD--42:多用GCD,少用performSelector系列方法

performSelector系列方法 编译器并不知道将要执行的选择器是什么,也不知道该选择器是否有返回值,所以没有办法运用ARC的内存管理规则判断返回值是不是应该释放 这些方法的返回值只能是void或者对象类型...(id) 使用起来传入参数有限 - (id)performSelector:(SEL)aSelector; - (id)performSelector:(SEL)aSelector withObject...:(id)object; - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; - (void...)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; - (void)performSelector...方法对比(尽可能使用GCD) 延时 //performSelector [NSObject performSelector:@selector(dosomething) withObject:nil afterDelay

9410

一个循环动画引起的内存泄露问题总结

:  [self performSelector:@selector(startBaseAnimation) withObject:nil afterDelay:pauseDuration]; 第一个问题要么在...第二个问题,因为 performSelector 这个方法内部是有一个 timer,该 timer 会持有 self,self 也持有该 timer,造成循环引用,所以 dealloc 就一直不调用了。...隐藏问题 这里还有一个隐藏的问题,就是发现 dealloc 方法,在 pop 页面时,有时能执行,有时不能执行,按理来说有执行了 performSelector 方法,应该是必现的问题。...后来发现,问题是出在动画完成的回调里,里面是判断 flag 为 YES 时才会跑进去执行 performSelector 方法,而为 NO 时就不会有问题。...总结 使用 performSelector 来延时执行,要记得其内部是有一个 timer 的,会持有 self,所以要注意循环引用的问题,虽然在最后会自动释放,但是这样也会造成延时释放或是上述重复调用导致

2.3K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券