티스토리 뷰

발생일: 2016.04.04

키워드: NSAssert, Assertions, NS_BLOCK_ASSERTIONS

문제:
NSAssert() 를 실행해도 콘솔에 출력되지 않는다.


해결책:
빌드 설정에 NS_BLOCK_ASSERTIONS 매크로가 설정되어 있었기 때문이다.
빌드 설정에서 매크로를 제외하니 의도한 대로 실행된다.


논의:
NS_BLOCK_ASSERTIONS 매크로가 있을 경우, NSAssert() 구문 자체가 실행되지 않으므로 함수 내에서 조건형의 함수를 호출하지 않도록 주의한다.

- (void)checkValid {
    ...
    self.isValid = YES;
}

- (void)doSomething {
    ...
    NSAssert([self checkValid], @"...");

    if (self.isValid) {
        // NS_BLOCK_ASSERTIONS 매크로가 있을 경우, checkValid 구문 자체가 실행되지 않는다.
    }
    ...
}


반응형
댓글
공지사항