2011-09-15 3 views
0

Objective-C를 코딩 할 때 sth를 수행 할 수 있습니까? like :Objective-C의 어느 위치 에나 {}자를 넣을 수 있습니까?

{ 
    UIView *viewOne = [[UIView alloc] init]; 
    // do stuff with view 
    [self addSubview:viewOne]; 
    [viewOne release]; 
} //View 1 

{ 
    UIView *viewTwo = [[UIView alloc] init]; 
    // do stuff with view 
    [self addSubview:viewTwo]; 
    [viewTwo release]; 
} //View 2 

한 번 이런 식으로했을 때 Xcode는 불평하지 않고 iOS 4.3.3에서 실행됩니다. 제 질문은 이것이 제 코드가 iOS 3.1.3 또는 다른 것과 호환되지 않는 경우, 제가 사용하고있는 블록일지도 모른다고 생각하기 때문입니다. 이 코드는 주로 코드의 가독성 및 접기에 사용하고 싶습니다.

+2

나는 "어디서든지"를 의미한다고 생각합니다. _everywhere를 쓰면 프로그램은 다음과 같이 보일 것입니다 :'}}}} {{{} {} {} {{} {{} {} {} {{}'. – paxdiablo

답변

1

당신이하는 일은 분리 된 범위를 만드는 것입니다. 첫 번째 범위 내에서 선언 된 것은 두 번째 범위에서 사용할 수 없습니다.

이것은 완벽하게 합법적입니다 (Objective-C는 단순히 C의 엄격한 수퍼 세트이기 때문에 그곳에서도 괜찮습니다).

나는 많은 프로젝트에서이 작업을 수행했다. 그러나 특별히 관련이 없으며 코드 품질이 좋지 않음을 나타내는 메서드 부분을 분리하는 방법으로 볼 수 있으므로 직접 사용하지 않았습니다. 코드가 좋지 않다는 의미가 아닙니다. ! 거기에

^{ 
    //code 
} 

는 가장 기본적인 형태처럼

은 또한 이러한 "폐쇄"에서와 같이, C 블록 없습니다하는 C 블록은 보인다.

0

당신의 가독성과 같이 중괄호를 사용하여 완전히 멋지게 만듭니다. 컴파일러는 불평하지 않습니다 : P

1

오랜 기간 동안 C의 기능이었습니다. "복합 문"또는 "블록 문"이라고 부르지 만 애플이 최근에 소개 한 "블록"확장과는 아무런 관련이 없습니다. 여러 문장을 그룹화하고 변수의 범위를 설정하는 방법 일뿐입니다.

0

예, 가능합니다. 그러나 대신이 방법을 만듭니다.

-(void)addView:(UIView*)view{ 
... 
} 

더 읽기 쉽고 명확합니다. 또한 코드 재사용도 없습니다.

+0

그게 무슨 소리 죠? 중괄호 배치 방법을 코드 재사용. 해독 성은 개인 취향입니다. – ARC

+0

여러 개의 코드 라인이있는 소스는 읽을 수 없다고 생각합니다. 이러한 논리 블록이 50 개있는 경우이 코드가 어떻게 표시됩니까? – beryllium

+0

잘 (이 예제에서는) 모든 Subview와 똑같은 일을 할 가능성이 없기 때문에, 그 방법은 이상적이지 않을 것입니다. 어떤 경우에는 당신이 옳을 수도 있습니다. – Ahti

관련 문제