欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

重要的代码片段

程序员文章站 2022-07-13 12:27:48
...

objc中标识类、方法或属性过期宏

DEPRECATED_ATTRIBUTE

DEPRECATED_ATTRIBUTE
/// apns路由器
@interface XTXMessageRouter : NSObject
- (id)init __attribute__((unavailable("init not available, call initWithUrl: instead")));
/// 初始化
- (instancetype)initWithUrl:(NSString *)urlStr;
/// 执行跳转
- (void)go DEPRECATED_ATTRIBUTE;

updateViewConstraints

此函数是从iOS6.0开始在ViewController中新增一个更新约束布局的方法,这个方法默认的实现是调用对应View的 updateConstraints 。ViewController的View在更新视图布局时,会先调用ViewController的updateViewConstraints 方法。我们可以通过重写这个方法去更新当前****View****的内部布局,而不用再继承这个****View****去重写****-updateConstraints****方法。我们在重写这个方法时,务必要调用**** super ****或者**** ****调用当前****View****的**** -updateConstraints ****方法。

controller :

#pragma mark - system
- (void)updateViewConstraints {

    WS(weakSelf)

    [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.equalTo(weakSelf.view);
    }];

    [super updateViewConstraints];
}

view :

- (void)updateConstraints {

    WS(weakSelf)
    [self.mainTableView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.equalTo(weakSelf);
    }];
    [super updateConstraints];
}

dispatch_main_async_safe

注意这里判断的是队列而不是线程

#ifndef dispatch_main_async_safe
#define dispatch_main_async_safe(block)\
    if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {\
        block();\
    } else {\
        dispatch_async(dispatch_get_main_queue(), block);\
    }
#endif

转载于:https://www.jianshu.com/p/6d70a9e74bb5