-(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]
后为零,但子视图数组仍然包含两个子视图。