본문 바로가기
반응형

Objective-C4

Objective-C에서 인터페이스 공개시키기 C 언어는 OOP 언어가 아니기 때문에 애초에 접근 제어(Access Control)와 관련된 기능이 없다. 그래서 보통은 헤더파일에 공개하기를 원하는 변수나 함수 등의 선언문을 작성해 놓고 필요한 곳에서 해당 헤더를 포함(include)시켜서 사용한다. 하지만 항상 헤더가 제공되는 법은 아니다. 만약 헤더 파일이 없다면 extern이라 불리는 키워드를 이용해 외부에서 구현된 기능을 적당히 참조하거나 호출하는 것이 가능하다. 예를 들어 아래의 코드가 있다고 치자. int globalvalue = 0; int foobar(int left, char *right) { ... } 위 코드의 인터페이스가 없더라도 아래와 같이 선언하면 위의 변수와 함수를 그대로 쓸 수 있게 된다. extern int global.. 2023. 3. 13.
Objective-C 블록 문법 블록(block)은 Objective-C에서 쓸 수 있는 동적 함수 혹은 클로저(Closure)와 비슷한 기능이다. 필요할 때 동적으로 생성될 수 있고 이름 없이도 구현할 수 있는 등 다른 여러 언어들의 클로저 개념과 상당히 유사하다. 블록이 컴파일될 때는 실제로는 함수 포인터 형식으로 변경되는 것으로 유추된다. 실제 코드에 포인터를 의미하는 * 문자가 사용되지 않지만 nil 을 가질 수 있는 등 포인터로 대체되어 컴파일되는 것 같다. 문법 꺽쇠 즉 ^ 문자가 블록을 가리키는 핵심적인 오퍼레이터다. ^{ ... } 위가 블록 문법을 알려주는 가장 기본적인 문법이지만 실제로는 아래와 같은 식의 문법을 쓰게 되는 것 같다. returntype (^name)(parameters) = ^(parameters) .. 2023. 3. 11.
Swift에 어울리는 Objective-C 코드 작성하기 이 글은 Swift 호환성이 좋은 Objective-C 코드를 작성하는 방법에 관한 내용이다. Swift라는 언어가 워낙 쓰기 편하게 나와서 이제는 과연 얼마나 Objective-C 코드가 쓰일까 알 수 없는 요즘이다. 그래도 개인적으로는 쓸 수밖에 없는 상황이기도 하고 아직 쓰이는 곳이 분명 있으리라는 믿음으로 이런 글을 쓰게 되었다. 참고로 이 글의 핵심 키워드는 아마도 NS_SWIFT_NAME인 것 같다. C 함수 별명 Objective-C 코드로 작성한 C 함수의 인터페이스는 Swift 측에서 보면 좀 답답할 수도 있다. 예를 들어 아래 함수가 있다고 치자. int SuperGoodAdditionFeature(int a, int b) { return a + b; } 이 함수를 Swift에서 접근하.. 2022. 3. 6.
Swift와 ObjC에서 Deprecated 처리하기 Swift와 Objective-C에서 클래스나 메서드, 프로퍼티 등을 Deprecated로 만드는 방법을 정리하는 글입니다. Deprecated는 단순히 말해서 '곧 사라질 기능'을 표기할 때 사용합니다. 오래된 프레임워크를 버전업 하거나 했을 때 노란 딱지로 빌드 경고가 뜰 때 이런 Deprecated 경고를 종종 볼 수 있습니다. 기능이 이름의 변경 혹은 리팩터링 등으로 바뀌게 될 부분을 미리 알려주는 용도로도 자주 사용되지요. Swift의 경우 Swift에서는 @available을 통해 deprecated 표기를 할 수 있습니다. @available(*, deprecated) class SomeClass { ... } 함수나 메서드도 동일하게 사용합니다. @available(*, deprecated.. 2020. 3. 3.
728x90
반응형