有一条声明CustomActivity * customActivity = [[CustomActivity alloc]init];
CustomItemProvider *itemProvider = [[CustomItemProvider alloc] initWithPlaceholderItem:_itemsArray];
NSArray *activityItems = [NSArray arrayWithObjects:itemProvider, NSLocalizedString(@"Attached is a file.", nil), nil];
UIActivityViewController *avc = [[UIActivityViewController alloc]
initWithActivityItems:activityItems
applicationActivities:@[customActivity]];
float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (iOSVersion < 9.0)
{
avc.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToFlickr, UIActivityTypePostToTwitter, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypePostToTencentWeibo,UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList];
}
else
{
avc.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToFlickr, UIActivityTypePostToTwitter, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypePostToTencentWeibo,UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList, UIActivityTypeOpenInIBooks];
}
[self presentViewController:avc animated:YES completion:nil];
。控制台返回&#34; 0&#34; (一个字符串)。
当语句为+[[]] + [[]]
时,控制台返回0(一个数字)。
如果+[[]]
为0,第一个如何返回字符串?
答案 0 :(得分:3)
这里的语法树看起来像
+
/ \
/ \
+ [ ]
| |
| |
[ ] [ ]
|
|
[ ]
也就是说,二进制+
的左侧操作数是一元+
操作的结果,而右侧操作数是[[]]
表达式的结果
左侧是runtime semantics of the unary +
operator运算符的一个数字,它调用ToNumber。
右侧是一个对象,它在ToPrimitive的第9步中由evaluation of the +
operator(通过调用对象的toString
方法)强制转换为字符串基元。对于数组,toString
返回由逗号连接的数组内容的字符串形式,在本例中为空字符串。
您可以通过覆盖某个对象上的toString
并查看更改后的结果来验证这一点:
var a = [];
a.toString = function() { return "foo"; };
console.log(0 + a);
这将产生"0foo"
。
答案 1 :(得分:1)
+[[]]
- 有一元运算符。
一元+运算符将其操作数转换为数字类型。一元 - 运算符将其操作数转换为数字类型,然后将其否定。
您的表达非常+[[]]
加[[]]
其中'[[]]'由于二进制+
运算符而转换为空字符串。
因此是0 + '' = '0'