1.GCD方法使得Block中代码运行前阻塞线程方法
dispatch_time_t t = dispatch_time(DISPATCH_TIME_NOW, 0.35*1000*1000*1000); //阻塞0.35秒,过时取消阻塞线程
dispatch_semaphore_t sem = dispatch_semaphore_create(0); //创建一个信号量且初始信号为0
dispatch_semaphore_signal(sem); //信号量加1,该行代码可写在Block末尾
dispatch_semaphore_wait(sem,t); //信号量减1,如果>0,则向下执行,否则等待
2.重写init方法
-(instancetype)init{
if(self = [super init]){
//你要需要在init里加入的自己的方法代码
}//这个方法是继承父类方法
return self;
}
3.观察者模式
一视图发送通知,二视图接到通知后执行相应代码
//一视图发送通知:
[[NSNotificationCenter defaultCenter]postNotificationName:@"selfBtnClicked" object:self userInfo:_dictionary];
//此方法里的_dictionary为你想通过这个通知向二视图传递的值,必须为字典
//二视图注册并接收通知
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(selfBtnClicked:) name:@"selfBtnClicked" object:nil];
#pragma mark 通知方法
- (void)selfBtnClicked:(NSNotification *)notification{
//之前一视图中传来的字典存在sender.userInfo中,取出即可
NSDictionary *dict = notification.userInfo;
}
网友评论