Objective C에서 extern을 사용하는 것이 얼마나 좋은가요? 일부 부품을 쉽게 코딩 할 수 있지만 객체 지향을 망칠 수 있습니까?Objective C에서 extern 사용
답변
당신은 extern
은 코코아 프레임 워크에 광범위하게 사용되는 것을 확인할 수 있습니다 구현에 실제 NSString*
을 정의하고 하나가 설득력을 찾기 위해 하드 누르면된다 그 그들의 개체 (OO)는 "버릇 없게"된다. 오히려 코코아는 캡슐화가 잘되어있어 꼭 필요한 것만 노출합니다. 전역 적으로 정의 된 상수는 확실히 가장 일반적인 용도이지만 반드시 유효한 유일한 용도는 아닙니다.
IMO, extern
을 사용하면 반드시 개체 방향을 "망칠"수는 없습니다. OO 에서조차도 어디서나 액세스 할 수있는 변수를 자주 사용합니다. extern
을 사용하면 Objective-C에서 "클래스 변수"(예 : Java에서 static
으로 선언 된 클래스 변수)가 부족한 경우에 가장 자주 발생합니다. 심볼이 선언 된 컴파일 단위를 넘어서는 심볼을 참조 할 수있는 범위를 확장 할 수 있습니다.이 심볼은 본질적으로 누군가에 의해 정의 될 것이라고 약속함으로써 가능합니다.
extern
과 __attribute__((visibility("hidden")))
을 결합하여 편집 장치 외부에서 사용할 수 있지만 연결 장치 외부에서는 사용할 수없는 심볼을 만들 수 있습니다. 필자는 상위 수준의 내부 세부 정보를 적절하게 캡슐화하기 위해 사용자 지정 라이브러리 및 프레임 워크 코드에이 코드를 사용했습니다.
무엇을 사용하는지에 따라 다릅니다. 전역 적으로 정의 된 상수에 액세스하려면이 함수를 사용하는 것이 좋습니다.
전역 개체가있는 경우 대신 Singleton을 사용하는 것이 좋습니다.
Objective-C의 extern
키워드에 대한 몇 가지 사용 사례가 있습니다.
Aaron Hillegass는 글로벌 알림 이름 extern을 만들 것을 제안합니다. 예 :
extern NSString* const XYYourNotification;
그런 다음
필요에 따라 예를 들어 로그인 페이지가 있습니다. 로그인하면 응용 프로그램의 다른 페이지에 알립니다.
#import <Foundation/Foundation.h>
extern NSString *const DidLoginNotification;
@interface LoginViewController : NSObject
- (void)login;
@end
// LoginViewController.m
#import "LoginViewController.h"
//define extern const in implementation file only once for the whole process
NSString *const DidLoginNotification =
@"DidLoginNotificationNotified";
@implementation LoginViewController
- (void)login {
// Perform notification
[[NSNotificationCenter defaultCenter];
sendNotificationName: DidLoginNotification
object:nil];
}
알림 수신자는 const의 값을 알 필요가 없습니다.
- 1. Objective C에서 '^'기호 사용
- 2. Objective C에서 CString 사용
- 3. C에서 "extern"저장소 클래스 지정자 사용
- 4. C에서 extern 변수 연결하기
- 5. Objective-C에서 enum을 사용 하시겠습니까?
- 6. Objective-C에서 프로토콜 버퍼 사용
- 7. objective-c에서 C++ 클래스 사용
- 8. Objective-C에서 참조로 패스 사용
- 9. Objective-C를 사용하여 정적 라이브러리의 extern 변수
- 10. Objective-C에서 .NET 웹 서비스 사용 [iPhone]
- 11. objective-C에서 프로토콜 정의 및 사용
- 12. objective-c에서 변수 이름으로 인수 사용
- 13. Objective C에서 열거 형을 속성으로 사용
- 14. extern "C"는 C에서 어떤 효과가 있습니까?
- 15. extern 키워드가 c에서 C++와 다른가요?
- 16. Objective C에서 C++ 메서드 호출
- 17. objective-c에서 상수 정의하기
- 18. Objective-C에서 반환
- 19. Objective C에서 CFTree 만들기
- 20. Objective-C에서 오일러의 수는?
- 21. Objective-C에서 클래스를로드하는 방법
- 22. Objective C에서 자동 설치
- 23. Objective-C에서 문자 입력
- 24. Objective-C에서 스레딩
- 25. Objective-C에서 Python으로 전화하십시오.
- 26. Objective-C에서 동등성 검사
- 27. Objective-C에서 예외 처리
- 28. Objective-c에서 시간 확인?
- 29. Objective C에서 NSString 연결하기
- 30. Objective-C에서 엔디안 스와핑?
흠 ..하지만 사용법이 더 많이 언급되지 않으면 코드 가독성이 떨어집니다. –
클래스 선언에이 방법을 사용할 수 있습니까? (즉, http://stackoverflow.com/questions/22798660/extern-with-class-in-objective-c) – Senseful
또한 FOUNDATION_EXPORT는 C++ 코드에서도 작동하므로이 점을 고려하십시오. http://stackoverflow.com/a/10953284/142358 –