本文最后更新于: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
此方法可以在参数中选择执行的线程,是一种非阻塞执行方式。没有找到取消执行方式。
| 12
 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方法中,添加了哪两个关键方法?
答:
| 12
 
 | -(void)willChangeValueForKey:(NSString *)key;-(void)didChangeValueForKey:(NSString *)key;
 
 | 
4、如何实现一个完整的单例?
答:
| 12
 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
相关账号: