零碎笔记(二)

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;
}

此处参考了一位大佬的博客:

一个烂人的随手笔记 remote_roamer

你可能感兴趣的:(零碎笔记(二))