programing

Objective-C 2.0에서 권장되지 않는 메서드에 플래그를 붙이려면 어떻게 해야 합니까?

muds 2023. 4. 11. 22:40
반응형

Objective-C 2.0에서 권장되지 않는 메서드에 플래그를 붙이려면 어떻게 해야 합니까?

저는 꽤 큰 iPad 앱을 개발하는 팀의 일원이며, 그 결과 다양한 클래스를 만들었습니다.문제는 일부 방법은 이제 거의 구식이 되었고, 전체 시스템의 일부가 이 방법을 사용하고 있다는 것을 알고 있기 때문에 아직 간단히 제거하고 싶지 않다는 것입니다.다만, 보다 좋은(구형) 베리에이션이 있어, 대신에 사용할 필요가 있습니다(구형 베리에이션의 일부는 실제로 새로운 것을 호출하고 있습니다만, 클래스 인터페이스 전체가 복잡해지고 있습니다).

특정 메서드를 권장되지 않는 것으로 표시할 수 있는 방법이 있습니까(예:@deprecatedJava 및[Obsolete].NET).

애플이 사용하는 것은Availability.h다음과 같은 태그가 붙어 있습니다.

__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);

...이 방법(+ App Store가 안전한가?) 또는 XCode에서 경고를 표시할 수 있는 대체 방법이 있습니까?

폐지 구문

구문은 메서드를 권장되지 않는 것으로 마크하기 위한 것입니다.

@interface SomeClass
-method __attribute__((deprecated));
@end

또는 다음과 같이 입력합니다.

#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE;  // or some other deployment-target-specific macro
@end

IMHO, __recommended:

- (void)myDeprecatedMethod __deprecated;
- (int)methodNameDeprecated:(int)param __deprecated;

수업시간에도 유효하다

__deprecated
@interface MyDeprecatedClass

  // ... some properties and methods ...

@end

권장 해제 플래그를 사용하여 추가 메시지를 제공하려는 경우 다음 플래그를 사용할 수 있습니다.

@property (strong, nonatomic) NSString *catName
                    __deprecated_msg("use name instead.");

//  -- Or -- 
@property (strong, nonatomic) NSString *catName
                    DEPRECATED_MSG_ATTRIBUTE("use name instead.");

//  -- Or -- 
@property (strong, nonatomic) NSString *catName
                    __attribute__((deprecated("use name instead.")));

위의 플래그를 사용하면 권장하지 않는 이유 또는 향후 개발자가 사용해야 할 방법을 알 수 있습니다.

메서드를 권장되지 않음으로 마크하려면 __attribute__("사용자의 메시지는 여기에 있습니다")를 사용합니다.

실제적인 예로는 맨틀에서

@interface NSValueTransformer (UnavailableMTLPredefinedTransformerAdditions)

+ (NSValueTransformer *)mtl_externalRepresentationTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONDictionaryTransformerWithModelClass:")));
+ (NSValueTransformer *)mtl_externalRepresentationArrayTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONArrayTransformerWithModelClass:")));

@end

를 사용합니다.deprecated속성:

- (int)bar: (int)x __attribute__((deprecated));

언급URL : https://stackoverflow.com/questions/3908715/how-do-i-flag-a-method-as-deprecated-in-objective-c-2-0

반응형