【发布时间】:2018-02-25 10:13:42
【问题描述】:
-(void) testLayer {
UIView *parent = [UIView new];
UIView *subview1 = [UIView new];
UIView *subview2 = [UIView new];
[parent addSubview:subview1];
[parent addSubview:subview2];
XCTAssertTrue(subview1.superview != nil);
XCTAssertTrue([parent.subviews count] == 2);
[subview1.layer removeFromSuperlayer];
XCTAssertTrue(subview1.superview == nil);
XCTAssertTrue([parent.subviews count] == 1); //This test case failing
}
有人能解释为什么最后一个测试用例失败了吗?我一定在这里遗漏了一些基本的东西。
我知道[subview1 removeFromSuperview] 是从 superView 中删除它的正确方法,但我有兴趣了解幕后发生的事情。
我的困惑是因为subview1.superview 在执行[subview1.layer removeFromSuperlayer] 后为零,但子视图数组中仍然包含两个子视图。
【问题讨论】:
-
如果要删除子视图,请执行
[subview1 removeFromSuperview]。删除子视图的支持层与删除子视图本身不同。
标签: ios objective-c uiview calayer