英语轻松读发新版了,欢迎下载、更新

iOS 中关于代码嵌套的问题

shifeng310 发布于 2014年02月21日
无人欣赏。

在网上下了一段源码,其中有一段语法看不懂,关于代码嵌套的,

[scrollView addSubview:({

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, CHTwitterCoverViewHeight, self.view.bounds.size.width - 40, 358 - CHTwitterCoverViewHeight)];
    label.numberOfLines = 0;
    label.font = [UIFont systemFontOfSize:22];
    label.text = @"hello world";
    label;
})];

这样就在scrollView 中添加了个view,最后一行代码看不懂,就一个“label”,不是“return label”吗? 个人理解是新开辟了一块内存,创建了一个label 那 指针呢,怎么返回给scrollView的? 各位老师请指点

共12条回复
指针为空 回复于 2014年02月21日

啊,最讨厌这样写代码的了。

我团队要是谁这么写的话,我一定会骂回去重写的

cenphoenix 回复于 2014年02月21日

这么写,直接拖出去砍了

isaced 回复于 2014年02月21日

这段代码前两天我还刚看过,当时猜想就和C语言中的括号表达式取最后一个","的值一个道理吧

比如这句: NSLog(@"%@",(@"a",@"b",@"c")); 虽然报了警告,但还是输出了c

isaced 回复于 2014年02月21日

事实跟我想的应该没错,再看个例子:

NSString *s = ({
    @"a";
    @"b";
    @"c";
});
NSLog(@"%@",s);

输出:c

shifeng310 回复于 2014年02月21日

1楼 @指针为空 网上下的demo 我也不会这么飘逸的写

shifeng310 回复于 2014年02月21日

4楼 @isaced 这。。。是什么语法原理啊

指针为空 回复于 2014年02月21日

4楼 @isaced 这代码其实就是,s先被赋值为a,然后被赋值为b,然后被赋值为c。。。。

isaced 回复于 2014年02月21日

7楼 @指针为空 啊,不是直接赋值成c?那这样呢?NSString *s = (@"a",@"b",@"c"); NSLog(@"%@",s);

isaced 回复于 2014年02月21日

7楼 @指针为空 那我监控它的setter方法,实际只调了一次,c,两种都是。

指针为空 回复于 2014年02月21日

9楼 @isaced 竟然不是这样的??搞不懂了。。。我查查去

isaced 回复于 2014年02月21日

5楼 @shifeng310 嗯,我昨天下下来看的这个demo,一下想不起名字了。我也不知道这语法叫什么名字,只记得以前在课堂上提到过一点,搜了下,语句内嵌表达式(statement-embedded expression)?

shifeng310 回复于 2014年02月24日

11楼 @isaced 我的我去了解下,谢谢

本帖有12个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]