Masonry使用过程中遇到的问题

1、equalTo 与mas_equalTo的区别

参考资料:
https://www.jianshu.com/p/51679879de8d
此资料包含怎么让equalTo 与mas_equalTo的用法一样的设置

a.今天遇到的问题:
问题原因:对CGSizeMake()函数使用了euqalTo
解决办法:将euqalTo 换成mas_equalTo即可

Passing 'CGSize' (aka 'struct CGSize') to parameter of incompatible type '__strong id'

解读:equalTo 和mas_equalTo的区别
参考资料:
https://www.jianshu.com/p/40b103648c75
https://blog.csdn.net/ruettiger/article/details/52165414
equalTo 是一个id(任意对象)类型,并不可以直接传值,它比较的是view;而mas_equalTo比较的是值,是一个宏,会对其参数实现装箱操作而完成和equalTo一样的功能。mas_equalTo支持的类型包括NSNumber,CGPoint,CGSize,UIEdgeInsets

mas_equalTo的源码

#define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__)))

equalTo的源码

- (MASConstraint * (^)(id))equalTo {
    return ^id(id attribute) {
        return self.equalToWithRelation(attribute, NSLayoutRelationEqual);
    };
}

通过equalTo的源码可以看出equalTo算是一个get方法,其返回值为block类型,block中的有一个参数类型为id,当我们执行equalTo方法时,需要为其传入id类型的参数,所以equalTo不能传入基本数据类型,但可以包装为NSNumber类型传入

 make.height.equalTo(@100);  

作者:多网
地址:https://www.jianshu.com/p/40b103648c75

对装箱和拆箱的解释:
https://www.cnblogs.com/wang-yaz/p/8516151.html
https://www.cnblogs.com/jhj117/p/5869837.html

Masonry 源码的解读:
https://www.cnblogs.com/jhj117/p/5869837.html

内联函数的概念(CGSizeMake()就是一个内联函数)
https://www.cnblogs.com/lalalatianlalu/p/11773224.html

宏的概念(还没怎么看懂):
https://www.jianshu.com/p/cbb6b71d925d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值