Objective-C 语法题
Objective-C syntax questions
我在这个博客上找到了这段代码 http://themainthread.com/blog/2014/02/building-a-universal-app.html
static void initSimpleView(SimpleView *self) {
// Configure default properties of your view and initialize any subviews
self.backgroundColor = [UIColor clearColor];
self.imageView = ({
UIImageView *imageView = [[UIImageView alloc] init];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:imageView];
imageView;
});
self.label = ({
UILabel *label = [[UILabel alloc] init];
label.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:label];
label;
});
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
initSimpleView(self);
}
return self;
}
它是如何工作的?
static void initWithSimpleView(SimpleView *self)
是什么意思?
为什么 imageView
和 label
在某种块中初始化?
这段代码声明了一个名为 initSimpleView
的 C 函数。名称 initSimpleView
仅在文件中可见,因为它被声明为 static
.
({ ... })
是一个 GNU C 扩展,称为“语句表达式”。您可以找到有关此用法的更多详细信息 in this Q&A.
我在这个博客上找到了这段代码 http://themainthread.com/blog/2014/02/building-a-universal-app.html
static void initSimpleView(SimpleView *self) {
// Configure default properties of your view and initialize any subviews
self.backgroundColor = [UIColor clearColor];
self.imageView = ({
UIImageView *imageView = [[UIImageView alloc] init];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:imageView];
imageView;
});
self.label = ({
UILabel *label = [[UILabel alloc] init];
label.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:label];
label;
});
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
initSimpleView(self);
}
return self;
}
它是如何工作的?
static void initWithSimpleView(SimpleView *self)
是什么意思?
为什么 imageView
和 label
在某种块中初始化?
这段代码声明了一个名为 initSimpleView
的 C 函数。名称 initSimpleView
仅在文件中可见,因为它被声明为 static
.
({ ... })
是一个 GNU C 扩展,称为“语句表达式”。您可以找到有关此用法的更多详细信息 in this Q&A.