本文最后更新于:2021年12月22日 中午
目录
1、开发中逆向传值的方式有哪些?
2、开发中方法延迟执行的方式有哪些?
(1)、performSelector
此方法是一种非阻塞的执行方式,未找到取消执行的方法。
1
| [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0];
|
(2)、NSTimer
此方法是一种非阻塞的执行方式,
取消执行方法:`- (void)invalidate;`
1
| NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
|
(3)、NSThread的sleep
此方法是一种阻塞执行方式,建议放在子线程中执行,否则会卡住界面。但有时还是需要阻塞执行,如进入欢迎界面需要沉睡3秒才进入主界面时。
没有找到取消执行方式。
1
| [NSThread sleepForTimeInterval:1.0];
|
(4)、GCD
此方法可以在参数中选择执行的线程,是一种非阻塞执行方式。没有找到取消执行方式。
1 2 3 4 5
| dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
dispatch_after(delayTime, dispatch_get_main_queue(), ^{ [weakSelf delayMethod]; });`
|
3、说一说KVO在重写NSKVONotifying对象的setter方法中,添加了哪两个关键方法?
答:
1 2
| -(void)willChangeValueForKey:(NSString *)key; -(void)didChangeValueForKey:(NSString *)key;
|
4、如何实现一个完整的单例?
答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #import "SingletonSample.h"
@interface SingletonSample()<NSCopying>
@end
@implementation SingletonSample +(instancetype)sharedInstance { static SingletonSample *instance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[super allocWithZone:NULL] init]; }); return instance; }
+(instancetype)allocWithZone:(struct _NSZone *)zone { return [self sharedInstance]; }
-(id)copyWithZone:(NSZone *)zone { return self; }
@end
|
5、iOS消息转发流程
答:
消息转发机制基本分为三个步骤:
完整代码

类方法:

实例方法:

详细流程:

感谢大佬提供的图片。
联系方式
邮箱: xiebangyao_1994@163.com
相关账号: