Objective-C란
중요 : 이 문서에는 개발중인 API 또는 기술에 대한 예비 정보가 들어 있습니다. 이 정보는 변경될 수 있으며 이 설명서에 따라 구현된 소프트웨어는 최종 운영 체제 소프트웨어로 테스트해야합니다.
Objective-C는 OS X 및 iOS 용 소프트웨어를 작성할 때 사용하는 기본 프로그래밍 언어입니다. C 프로그래밍 언어의 상위 집합이며 객체 지향 기능과 동적 런타임을 제공합니다. Objective-C는 C의 구문, 기본 유형 및 흐름 제어문을 상속하며 클래스 및 메소드를 정의하기위한 구문을 추가합니다. 또한 객체 그래프 관리 및 객체 리터럴에 대한 언어 수준 지원을 추가하는 한편 동적 타이핑 및 바인딩을 제공하고 런타임까지 많은 책임을 연기합니다.
요약
이 문서는 Objective-C 언어를 소개하고 그 사용법에 대한 광범위한 예제를 제공합니다. 커스텀 오브젝트를 설명하는 클래스를 생성하는 방법과 코코아와 코코아 터치가 제공하는 프레임 워크 클래스로 작업하는 법을 배웁니다. 프레임 워크 클래스는 언어와 별개이지만 Objective-C로 코드를 사용하기가 어려우며 많은 언어 수준 기능이 이러한 클래스에서 제공하는 동작에 의존합니다.
응용 프로그램은 객체 네트워크를 기반으로 구축됩니다.
OS X 또는 iOS 용 앱을 제작할 때 대부분의 시간을 객체 작업에 소비합니다. 이러한 객체는 Objective-C 클래스의 인스턴스이며, 그 중 일부는 Cocoa 또는 Cocoa Touch에서 제공하고 일부는 직접 작성합니다.
자신 만의 클래스를 작성하는 경우, 해당 클래스의 인스턴스에 대해 의도 된 공용 인터페이스를 자세히 설명하는 클래스에 대한 설명을 제공하십시오. 이 인터페이스에는 관련 데이터를 캡슐화하는 공용 속성과 메서드 목록이 포함됩니다. 메소드 선언은 객체가 수신 할 수있는 메시지를 나타내며 메소드가 호출 될 때마다 필요한 매개 변수에 대한 정보를 포함합니다. 또한 인터페이스에 선언 된 각 메소드의 실행 코드를 포함하는 클래스 구현을 제공합니다.
카테고리 기존 클래스 확장
기존 클래스에 대해 사소한 추가 기능을 제공하기 위해 완전히 새로운 클래스를 작성하는 대신 기존 클래스에 사용자 정의 비헤이비어를 추가하는 카테고리를 정의 할 수 있습니다. 카테고리를 사용하여 NSString과 같은 프레임 워크 클래스와 같이 원본 구현 소스 코드가없는 클래스를 비롯하여 모든 클래스에 메서드를 추가 할 수 있습니다.
클래스의 원래 소스 코드가있는 경우 클래스 확장을 사용하여 새 속성을 추가하거나 기존 속성의 속성을 수정할 수 있습니다. 클래스 확장은 일반적으로 단일 소스 코드 파일 내에서 또는 사용자 정의 프레임 워크의 개인 구현 내에서 사용하기 위해 개인용 비헤이비어를 숨기는 데 사용됩니다.
프로토콜은 메시징 계약을 정의합니다.
Objective-C 애플리케이션의 대부분의 작업은 서로 메시지를 보내는 객체의 결과로 발생합니다. 종종 이러한 메시지는 클래스 인터페이스에서 명시 적으로 선언 된 메서드로 정의됩니다. 그러나 때로는 특정 클래스에 직접 연결되지 않은 관련 메서드 집합을 정의 할 수 있으면 유용합니다.
Objective-C는 프로토콜을 사용하여 개체가 대리자에서 호출 할 수있는 메서드 (예 : 선택적 또는 필수)와 같은 관련 메서드 그룹을 정의합니다. 모든 클래스는 프로토콜을 채택 함을 나타낼 수 있습니다. 즉, 프로토콜의 모든 필수 메소드에 대한 구현을 제공해야 함을 의미합니다.
값과 컬렉션은 종종 Objective-C 객체로 표현됩니다.
Objective-C에서는 코코아 또는 코코아 터치 클래스를 사용하여 값을 표현하는 것이 일반적입니다. NSString 클래스는 문자의 문자열, 정수 나 부동 소수와 같은 숫자 유형에 대한 NSNumber 클래스 및 C 구조와 같은 다른 값에 대한 NSValue 클래스에 사용됩니다. int, float 또는 char과 같이 C 언어로 정의 된 기본 유형을 사용할 수도 있습니다.
컬렉션은 대개 다른 Objective-C 객체를 수집하는 데 사용되는 NSArray, NSSet 또는 NSDictionary와 같은 컬렉션 클래스 중 하나의 인스턴스로 나타납니다.
일반 작업을 단순화하는 블록
블록은 작업 단위를 나타 내기 위해 C, Objective-C 및 C ++에 도입 된 언어 기능입니다. 캡처 된 상태와 함께 코드 블록을 캡슐화하므로 다른 프로그래밍 언어의 클로저와 유사합니다. 블록은 컬렉션 열거, 정렬 및 테스트와 같은 일반적인 작업을 단순화하는 데 자주 사용됩니다. 또한 Grand Central Dispatch (GCD)와 같은 기술을 사용하여 동시 또는 비동기 실행을위한 작업을 쉽게 예약 할 수 있습니다
오류 개체가 런타임 문제에 사용됨
Objective-C에는 예외 처리를위한 구문이 포함되어 있지만 Cocoa 및 Cocoa Touch는 프로그래밍 오류 (예 : 배열 외부 액세스)에 대해서만 예외를 사용합니다.이 오류는 앱을 출하하기 전에 해결해야합니다.
디스크 공간이 부족하거나 웹 서비스에 액세스 할 수없는 것과 같은 런타임 문제를 포함한 다른 모든 오류는 NSError 클래스의 인스턴스로 나타냅니다. 앱이 실수를 계획하고 오류가 발생했을 때 최상의 사용자 환경을 제공하기 위해 오류를 처리하는 방법을 결정해야합니다.
Objective -C 코드는 설립 된 협약을 따른다.
Objective-C 코드를 작성할 때 많은 코딩 규칙을 염두에 두어야합니다. 메서드 이름은 소문자로 시작하고 여러 단어에 대해 낙타의 경우를 사용합니다. 예 : doSomething 또는 doSomethingElse. 그래도 자본금은 중요하지 않습니다. 당신은 또한 당신의 코드가 가능한 한 읽기 쉽도록해야한다. 이것은 메소드 이름이 표현 적이어야하고 너무 길지 않아야 함을 의미한다.
또한 언어 또는 프레임 워크 기능을 이용하려면 몇 가지 규칙이 필요합니다. 예를 들어, 속성 접근 자 메서드는 KVC (Key-Value Coding) 또는 KVO (Key-Value Observing)와 같은 기술을 사용하기 위해 엄격한 명명 규칙을 따라야합니다.
선결 요건
OS X 또는 iOS 개발을 처음 사용하는 경우 iOS 및 OS X 용 응용 프로그램 개발 프로세스에 대한 일반적인 개요를 보려면이 문서를 읽기 전에 오늘 iOS Apps 개발 시작 또는 Mac 응용 프로그램 개발 시작을 읽어야합니다. 이 문서의 대부분의 장 끝에있는 연습 문제를 따르기 전에 Xcode에 익숙해 져야합니다. Xcode는 iOS 및 OS X 용 앱을 제작하는 데 사용되는 IDE입니다. 이 코드를 사용하여 코드를 작성하고, 응용 프로그램의 사용자 인터페이스를 설계하고, 응용 프로그램을 테스트하고, 문제를 디버깅 할 것입니다.
C 또는 Java 또는 C #과 같은 C 기반 언어 중 하나에 익숙한 편이 좋지만이 문서에는 흐름 제어 명령문과 같은 기본 C 언어 기능의 인라인 예가 포함되어 있습니다. Ruby 또는 Python과 같은 다른 상위 레벨 프로그래밍 언어에 대한 지식이있는 경우 해당 내용을 따라 할 수 있어야합니다.
합리적인 범위는 일반적인 객체 지향 프로그래밍 원칙에 주어집니다. 특히 Objective-C의 맥락에서 적용될 때 그러 하듯이, 기본적인 객체 지향 개념에 최소한의 친숙 함을 전제로합니다. 이러한 개념에 익숙하지 않은 경우 Objective-C 프로그래밍의 개념에서 관련 장을 읽어야합니다.
참고 사항
이 문서의 내용은 Xcode 4.4 이상에 적용되며 OS X v10.7 이상 또는 iOS 5 이상을 대상으로한다고 가정합니다. Xcode에 대한 자세한 내용은 Xcode 사용자 가이드를 참조하십시오. 언어 기능 가용성에 대한 자세한 내용은 Objective-C 기능 가용성 색인을 참조하십시오.
Objective-C 앱은 객체의 수명을 결정하기 위해 참조 카운팅을 사용합니다. 대부분 컴파일러의 Automatic Reference Counting (ARC) 기능이이를 처리합니다. ARC를 사용할 수 없거나 개체의 메모리를 수동으로 관리하는 레거시 코드를 변환하거나 유지해야하는 경우 고급 메모리 관리 프로그래밍 가이드를 읽어야합니다.
컴파일러 외에도 Objective-C 언어는 런타임 시스템을 사용하여 동적 및 객체 지향 기능을 지원합니다. Objective-C Runtime Programming Guide 및 Objective-C Runtime Reference에 설명 된대로 Objective-C가 "작동하는 방식"에 대해 일반적으로 걱정할 필요는 없지만이 런타임 시스템과 직접 상호 작용할 수 있습니다.
'아이폰 - Objective C' 카테고리의 다른 글
Automatic Reference Counting(ARC) in IOS (0) | 2017.02.24 |
---|---|
Cocoapods 설치 및 사용법 (0) | 2017.02.16 |
ios10 UNUserNotificationCenter 푸시설정하기 (0) | 2017.02.10 |
UIAlertView가 deprecated되었으니 UIAlertController를 사용하는 방법 (0) | 2017.02.09 |