diff --git a/uikit/CSSLayout/BUCK b/uikit/CSSLayout/BUCK index 2cf62657..2c9ec8fd 100644 --- a/uikit/CSSLayout/BUCK +++ b/uikit/CSSLayout/BUCK @@ -7,8 +7,11 @@ include_defs('//CSSLAYOUT_DEFS') +UIKIT_CSSLAYOUT_COMPILER_FLAGS = ['-fobjc-arc'] + apple_library( name = 'CSSLayout', + compiler_flags = UIKIT_CSSLAYOUT_COMPILER_FLAGS, tests = [':CSSLayoutTests'], srcs = glob(['*.m']), exported_headers = glob(['*.h']), @@ -24,6 +27,7 @@ apple_library( apple_test( name = 'CSSLayoutTests', + compiler_flags = UIKIT_CSSLAYOUT_COMPILER_FLAGS, info_plist = 'Tests/Info.plist', srcs = glob(['Tests/**/*.m']), frameworks = [ diff --git a/uikit/CSSLayout/Tests/CSSLayoutTests.m b/uikit/CSSLayout/Tests/CSSLayoutTests.m index cd550bb3..2074b7c7 100644 --- a/uikit/CSSLayout/Tests/CSSLayoutTests.m +++ b/uikit/CSSLayout/Tests/CSSLayoutTests.m @@ -16,6 +16,36 @@ @implementation CSSLayoutTests +- (void)testNodesAreDeallocedWithSingleView +{ + XCTAssertEqual(0, CSSNodeGetInstanceCount()); + + UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; + [view css_setFlex:1]; + XCTAssertEqual(1, CSSNodeGetInstanceCount()); + view = nil; + + XCTAssertEqual(0, CSSNodeGetInstanceCount()); +} + +- (void)testNodesAreDeallocedCascade +{ + XCTAssertEqual(0, CSSNodeGetInstanceCount()); + + UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; + [view css_setFlex:1]; + + for (int i=0; i<10; i++) { + UIView *subview = [[UIView alloc] initWithFrame:CGRectZero]; + [subview css_setFlex:1]; + [view addSubview:subview]; + } + XCTAssertEqual(11, CSSNodeGetInstanceCount()); + view = nil; + + XCTAssertEqual(0, CSSNodeGetInstanceCount()); +} + - (void)testHiddenViewsAreNotMeasured { const CGSize firstSize = CGSizeMake(100, 100); diff --git a/uikit/CSSLayout/UIView+CSSLayout.m b/uikit/CSSLayout/UIView+CSSLayout.m index ca03cfc3..abcd4ed0 100644 --- a/uikit/CSSLayout/UIView+CSSLayout.m +++ b/uikit/CSSLayout/UIView+CSSLayout.m @@ -30,7 +30,6 @@ static void _updateFrameRecursive(UIView *view); - (void)dealloc { - [super dealloc]; CSSNodeFree(_cnode); } @end