@()可以用来将一些非对象的数据包装成OC里面的对象
NSLog(@"%@",@"123".class);
NSLog(@"%@",@("my").class);
NSLog(@"%@",@(123).class);
2017-04-05 21:39:16.681 呵呵[15842:508051] __NSCFConstantString
2017-04-05 21:39:16.681 呵呵[15842:508051] NSTaggedPointerString
2017-04-05 21:39:16.681 呵呵[15842:508051] __NSCFNumber
经常用到的就是将int float包装成为NSNumber对象。比如上面的第三个打印结果将123包装成了NSNumber。在masonry中,设置view的宽和高的时候不能直接传递基本数据类型,需要对基本数据进行包装。
[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.equalTo(@(30));
}];
结构体和共用体不能直接用上面的语法包装。用下面的NSValue类包装
CGPoint p = CGPointMake(100, 100);
NSValue *value = [NSValue valueWithBytes:&p objCType:@encode(CGPoint)];