2012-04-11 3 views

답변

13

그냥 선언에 속성을 추가

@interface Blah 
- (void)method __attribute__((deprecated)); 
@end 

당신이 포함 제공 번역에 맞는지,이 잘 작동합니다. 속성을 정의에 추가했는데 선언이 아닌 속성을 추가했을 수 있습니까? 그렇지 않으면 데모 (코드 샘플)가 도움이됩니다.

업데이트

위의 방법은 일반적인 메시지를 작동하지만,이 나타나는 그 소리는 IBAction들과 혼동됩니다.

clang을 사용하면 ibaction 속성이 암시 적으로 삽입됩니다 (이전에는 typedef 이었음). 속성이 선언에 지정된

만 처리기 출력은 다음과 같다 :

// preprocessed declaration 
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn)); 
// preprocessed implementation 
- (void)__attribute__((ibaction))setSomething:(id)sender 
...  

그래서,이 컴파일러는 바로이 숨겨진 장식 혼동되어 나타납니다, 당신은 또한에 속성을 추가해야합니다 메서드가 IBAction 일 때 경고를 표시하지 않도록 구현/정의

+0

이것은 작동하지 않습니다! –

+0

내 컴퓨터에서 작동;) 코드를 게시하십시오! – justin

+0

- (IBAction) showTag __attribute __ ((deprecated)); 나는 이것을 얻는다 : 메소드 구현에 대한 속성과 그것의 선언은 일치해야한다. –

0

clcat을 사용하여 Xcode 4.3.2에서 메소드의 선언 및 구현에 deprecated 속성을 추가해야합니다.

+0

맞습니다. 하지만 왜? –

+0

어깨를 으.. gcc보다 clang에서 다르게 구현 한 것 같습니다. –