'2010/07/06'에 해당되는 글 2건

  1. 2010.07.06 Apple Platform에서의 개발 개요 2
  2. 2010.07.06 Objective-C 또는 Objective-C++ 코딩 가이드라인
AppleApp/Instruction2010. 7. 6. 02:12

애플 플랫폼Apple Platform - 맥Mac, 아이폰iPhone, 아이패드iPad - 에서 개발하기 위해서 몇 가지 알아두어야 할 사항들이 있다. 개발 도구와 개발 언어 그리고 프레임워크이다.

1. 개발 도구: Xcode & Interface Builder
Xcode는 Visual Studio같은 하나의 개발 툴이며, 애플 플랫폼에서의 응용프로그램은 Xcode에서 개발할 수 있다. 그리고 별도로 Interface Builder라는 프로그램을 제공하는데 Visual Basic의 디자인 모드가 분리되었다고 생각하면 될 것이다.

2. 개발 언어: Objective-C
Apple에서는 이 Objective-C를 어플리케이션 개발을 위한 기본 언어로 제안한다. 이는 C를 확장한 언어(C를 상속한 언어)로써 한 프로젝트 및 파일 내에서 Objective-C의 문법과 C의 문법을 혼합하여 사용할 수 있다. Objective-C++라고 하여 Objective-C의 문법과 C++의 문법을 한 프로젝트 및 파일 내에서 혼용할 수도 있다. Java가 이 언어에서 영향을 받아 개발된 것으로 유명하며, Objective-J라는 별도의 언어도 존재한다.

3. 프레임워크: Cocoa
코코아는 윈도우의 .NET과 같은 프레임워크이다. 일종의 부품이라고 이해하면 더 쉽다. 레고에 비유하자면 조립에 필요한 블럭(객체)를 가져와서 City시리즈 같은 시리즈(프로그램) 또는 사람이나 자동차(객체)을 만들어 내는 셈이다. Mac OS X에 사용되는 프레임워크는 Cocoa라고 부르며 아이폰에 사용되는 코코아는 Cocoa Touch라고 부른다. 이름이 비슷하지만, 프레임워크 내에 정의된 클래스가 사뭇 달라서 Mac OS X에서 개발하던 사람이라면 개발툴인 Xcode와 Interface Builder나 그 언어인 Objective-C에 대해서는 다시 공부할 필요가 없겠지만, Cocoa에 대해서라면 한 번쯤 다시 훑어볼 필요가 있을 것이다. 보통 Cocoa에서 정의된 클래스에는 NS라는 접두사가 붙는데, 이는 Next가 Apple에 인수되기 전 개발하던 운영체제인 Next Step(현재 Mac OS X)의 약자이다.
Posted by 마이클
AppleApp/Objective-C2010. 7. 6. 01:30
공동 프로젝트로 코딩을 하다보면 서로 서로 코드를 쉽게 보거나,
클래스, 변수 및 함수명의 충돌을 최소한으로 방지하기 위해  몇 가지 방침들을 정하게 된다.

Objective-C 또는 Objective-C++를 코딩함에 있어서도 Apple에서 정한 방침들이 있다.
애플에서 발행한 공식문서는 다음과 같다.(영문)
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

중점 요소는 다음과 같다.
1. 클래스명과 함수명은 무조건 대문자로 시작한다. 그 외의 변수나 메서드명은 소문자로 시작한다.
인스턴스 생성을 비롯한 기타 사용시에 쉽게 알아보기 위함이다.

2. 함수는 선언부분 다음줄에서 중괄호를 열고, 나머지는 선언부분에서 중괄호를 연다.
함수(메서드) 정의는 그 다음에 중괄호를 열고 닫는다.
- (void) thisIsSample: (NSString *) string
{
NSLog(@"HelloWorld");
}
그 외의 경우(@interface, if문, for문 등..)에는 문장 표현이 있는 있는 줄에서 중괄호를 연다.
@interface refrigerator: NSObject {
NSInteger *temperatureInside;
NSInteger *temperatureOutside;
}
- (void) thisIsSample: (NSString *) string;
- (void) cool:
@end
이렇게 코딩하는 까닭은, C와 달리 Objective-C의 문법상 함수 인자가 늘어날수록 서두가 매우 길어지는 현상 때문이다.
예를 들어 C에서는 다음과 같이 표현하는 것을,
void helloworld(chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10) {
printf(chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10);
}
Objective-C에서는 다음과 같이 표현한다.
(현재 메서드 형태로 구현했는데, 그 까닭은 Objective-C가 C를 상속하기 때문에 메서드가 아닌 일반 함수는 C의 문법을 따르기 때문이다. - 이는 Objective-C가 문법상 일관성이 없다는 비판을 받기도 하는 이유이기도 한데, 이렇게 문법이 작성된 까닭은 최대한 C의 형태를 피함으로써 C와 Objective-C로 작성된 구간을 구분할 수 있도록 하기 위함이다.)
- (void) helloworld: (NSString *)chr1 second: chr2 third: chr3 forth: chr4 fifth: chr5 sixth: chr6 seventh: chr7 eighth: chr8 ninth:chr9 tenth:chr10
{
NSLog(@"%@%@%@%@%@%@%@%@%@%@", chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10);
}

위의 두 가지 사항만 명심하고 작성해도 프로젝트를 진행함에 있어서 큰 껄끄러움은 줄어들 것이라고 생각한다.

C 코딩시 적용하던 상식은 여기서도 당연히 적용한다.
1. 상수는 대문자로 표시한다.

'AppleApp > Objective-C' 카테고리의 다른 글

Objective-C에서의 객체 인스턴스 해제  (0) 2010.07.07
Posted by 마이클