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