2010. 10. 8. 05:13
지금은 사진을 안찍어놓아서 메일사진으로 일단 대체하고, 다음앱을 개발할때 찍어서 다시 올려야겠다.



일단 대충 요약하자면


맨 처음 앱을 등록할때


Waiting For Upload 상태가 된다.


앱을 업로드 할때까지 대기중인 상태다.

그 후 앱을 업로드시키고나면



Waiting For Review 상태로 넘어간다.


이는 심사를 하고있는게 아니라 심사 대기중인 상태다.

맨 처음 그런것도 모르고 그냥 1주일정도 걸린다길래 마음놓고 언제쯤 통과메일이 올까 하고는 기다렸다.

내 경우는 대충 4일정도 뒤에 메일이 도착했다.

좋아서 얼른 메일을 열어보니



In Review 상태로 넘어갔단다. -_-;;


이제 심사가 들어간다는거다.

처음에 마음을 비우고 기다리던것과 달리 이때쯤 되니까 처음이라 그런지 금방메일이 오겠지! 하면서 자꾸 메일을 열어보게 됬다.

마음에 걸리는부분도 있고 소스도 조잡하고 이건 뭐 초딩들도 만들수 있는 수준의 앱이라

속편하게 Reject 당하면 마음을 비우고 다시 만들텐데 이건 통과인지 거부인지 알수가 없어서 한참을 마음졸였다.

그리고 이틀 뒤(방금), 메일이 도착했다.



Processing for App Store 상태로 넘어갔다.


나는 이제 Ready For Sale(RFS) 메일아니면 Reject 메일이 도착할줄 알았는데 이게 뭔가 싶었다.

그래도 뭐 Reject 된 건 아닌듯 싶어서, 앱 관리 페이지로 가보니까



그제서야 Ready For Sale 상태로 바뀌었다.


히히


지금부터 넉넉잡고 하루에서 이틀이면 앱스토어에 등록이 완료 된다.

이전까지만 해도 메일을 계속 새로고침 했는데 지금부터는 아이튠즈에서 계속 검색만 하게된다 -_-;;

아직 무료앱만 만들어봐서 절차는 대충 이런거같고, 유료앱은 어떨지 잘 모르겠다.

'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 4  (0) 2010.10.03
아이폰개발 용어 3  (0) 2010.10.03
메모리 관리  (0) 2010.10.02
자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
Posted by terebyte
2010. 10. 3. 19:55
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

Viewstack : Navigation 컨트롤러가 관리하는 일련의 뷰
Keys : Dictionary가 데이터를 구분하는 데 사용하는 것
Console : 앱에서 실행될 때 디버그 메시지가 나오는 창
Navigation : Table View와 Navigation 컨트롤을 제공하는 프로젝트 템플릿
Table View : 셀을 갖고 있으며, 많은 데이터를 보여줄 수 있는 뷰
Dictionary : 배열보다 좀 더 구조화된 데이터를 가질 수 있는 구조체
Instantiate : 새로운 클래스를 사용하기 위해 먼저 하는것
NSString : @기호는 이 클래스의 객체를 생성하도록 한다.
Debugger : 코드의 문제점 해결을 도와주는 Xcode에서 제공하는 도구

'공부 > iPhone' 카테고리의 다른 글

기다리던 메일 도착!  (1) 2010.10.08
아이폰개발 용어 3  (0) 2010.10.03
메모리 관리  (0) 2010.10.02
자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
Posted by terebyte
2010. 10. 3. 03:41
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

First Responder : 컨트롤이 포커스를 갖게 되면, 이 상태가 된다.
Import : 다른 파일을 소스에 읽어 들이는 키워드
Seletors : 메시지에 메소드가 매핑될 때, 메소드를 구분하는 고유한 이름
Retain : 객체를 리테인하는 메소드 이름
@Properties : 자동으로 생성하는 접근자 메소드
Nonatomic : Properties 선언시, 뮤텍스를 사용하지 않도록 지정하는 속성
Auto Release Pool : 현재의 이벤트 처리가 끝나면 릴리스 될 객체들의 배열
Static Method : 선언할 때, 앞에 덧셈 기호(+)가 붙는 메소드
Message : 객체 간에 주고 받는 것
Memory : 아이폰은 이것이 한정되어 있어서 앱에서의 관리가 중요하다.


'공부 > iPhone' 카테고리의 다른 글

기다리던 메일 도착!  (1) 2010.10.08
아이폰개발 용어 4  (0) 2010.10.03
메모리 관리  (0) 2010.10.02
자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
Posted by terebyte
2010. 10. 2. 23:09
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

아이폰에서 Objective-C 는 가비지 콜렉션을 지원하지 않는다.(물론 Mac에서는 지원한다) 그래서 레퍼런스 카운팅 (Reference Counting) 을 사용한다.
기본적으로 각 객체는 자신을 참조하는 객체들의 수를 기억하고 있다가, 참조수가 0이 되면 (자신을 참조하는 객체가 없는 경우) 메모리에서 제거한다. 프로퍼티를 사용 할 경우, 컴파일러가 이런 메모리 관리 기능을 처리한다. 

다음은 몇몇 프로퍼티 속성관련 메모리처리 방법이다.

readonly : getter 만 생성한다.

- (NSString*) myField {  //  getter 생성
return myField;
}

retain : getter 와 setter 둘 다 생성하며, 새로운 객체를 retain 하고, 기존의 객체를 release 한다.

- (NSString*) myField {  //  getter 생성
return myField;
}
- (void) setMyField: (NSString*) newValue {  //  setter 생성
if (newValue != myField) {  //  생성된 setter는 새로운 객체가 기존 것과 다른지 확인한다.
[myField release];  //  기존 객체를 release 시킨다.
myField = [newValue retain];  //  새로운 객체를 retain 한다.
}
}

assign : getter 와 setter 둘 다 생성하며, 기존의 객체를 release 하지 않는다.

- (NSString*) myField {  //  getter 생성
return myField;
}
- (void) setMyField: (NSString*) newValue {  //  setter 생성
myField = newValue;
}


retain 과 release 외에도 Objective-C 에서는자동으로 메모리를 release 하는 오토릴리스 (autorelease) 풀을 제공한다.
이 풀은 기본적으로 객체에 대한 배열이며, 현재 이벤트에 대한 처리가 끝나면 Objective-C 런타임 시스템이 release 할 객체를 갖고 있는다.
어떤 객체를 autorelease 풀에 넣기 위해서는 다음과 같이 메시지를 보낸다.

[aString autorelease];

지금 당장의 retain 수는 변하지 않지만, 현재의 이벤트 루프가 끝나면 aString객체는 release 메시지를 받게 된다. autorelease는 처리와 관련한 성능에 영향을 미치므로, 자주 사용해서는 안 된다. 가능하면 명시적으로 retain 과 release 해주는 것이 더 좋다.






'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 4  (0) 2010.10.03
아이폰개발 용어 3  (0) 2010.10.03
자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
Posted by terebyte
2010. 10. 2. 23:04
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

readonly
프로퍼티가 변경되지 않도록 할 때 사용한다. 필드의 값을 바꾸는 메소드를 사용자가 직접 만들 수 있기는 하지만, 컴파일러가 setter를 자동으로 생성해 주지는 않는다.

retain
객체의 값을 다룰 때 주로 사용한다. 컴파일러는 입력값으로 쓰이는 객체를 retain 하고, 이전에 있던 객체는 release 한다.

readwrite
프로퍼티를 변경할 필요가 있을 때 사용한다. 컴파일러는 getter 와 setter 를 생성해 준다. 기본값이다.

copy
전달된 원래의 값이 변경되지 않도록 할 때 사용한다. 예를들어 배열을 프로퍼티로 할당할 때, 프로퍼티로 지정된 다음에도 원래 배열에 있던 값을 보존하고자 하는 경우에 쓰인다. 객체를 복제하고 복제된 객체를 프로퍼티에 지정하게 된다.

assign
int 나 float 와 같은 기본형을 다룰 때 사용한다. 컴파일러는 setter 를 단순히 "myField = value" 와 같은 단순 할당문으로 만든다. 이것이 기본값이다. 그러나 대부분 객체를 다룰 때에는 메모리 관리 측면에서 적절하지 않다.

nonatomic
기본적으로 생성된 접근자 메소드는 프로퍼티의 값을 변경할때, 뮤텍스 (mutex) 를 사용하도록 되어 있어서 멀티 쓰레드 환경에서 안전하게 실행할 수 있다. 이런 특성을 atomic 이라고 한다. 그러나 클래스가 멀티 쓰레드 환경에서 실행되는 것이 아니라면, 이것은 낭비이므로 nonatomic 으로 속성을 선언하면 불필요한 뮤텍스 관련 처리를 하지 않도록 할 수 있다.

'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 3  (0) 2010.10.03
메모리 관리  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
피커 (Picker)  (0) 2010.10.02
Posted by terebyte
2010. 10. 2. 22:44
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

Datasource : 피커와 같은 컨트롤에게 제공할 데이터를 갖고 있다.
HIG(Human Interface Guide) : 아이폰 앱이 따라야 할 UI 가이드라인으로써 애플이 제공하는 문서
File's Owner : NIB 파일이 로드되고 나서 이 뷰를 소유할 객체를 나타내는 프록시
Picker : 사용자가 이미 정해져 있는 여러 선택사항 중에 하나를 고를 수 있는 컨트롤
Utility : 대부분 하나의 화면으로 구성되고, 사용자의 입력 없이 기본 정보를 제공하는 앱 타입
Protocol : 객체가 처리할 수 있는 메시지들의 규약(보통 Data Source 와 Delegate 가 이것을 따른다)
Delegate : 다른 객체들이 처리할 것 중 일부를 대신 처리하는 객체
Developer Documentation : 프로토콜이나 컨트롤에 익숙치 않다면 참조해야 할 것.
Productivity : 계층화된 데이터를 관리하는 앱의 일반적인 타입
Immersive : 주로 고유한 컨트롤 및 UI를 갖고있는 타입의 앱
NIB File : xib 확장자를 갖는 파일을 부르는 이름

'공부 > iPhone' 카테고리의 다른 글

메모리 관리  (0) 2010.10.02
자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
피커 (Picker)  (0) 2010.10.02
애플 API문서 보기  (0) 2010.10.02
Posted by terebyte
2010. 10. 2. 21:47
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

컨트롤은 컨트롤마다 자신만의 Data Source 와 Delegate 를 가지고 있다고 했다.

그 고유의 Data Source 와 Delegate 를 프로토콜이라고 부른다.

Picker 를 예로 들어보겠다.

Picker 의 경우는 UIPickerViewDataSource 와 UIPickerViewDelegate 라는 Data Source 와 Delegate 를 가지고 있다.

이 둘 모두가 프로토콜이다.

프로토콜은 필수적인 메소드와 선택적으로 사용하는 메소드를 구분해준다.

예를 들어 UIPickerViewDataSource 프로토콜은 pickerview:numberOfRowsInComponent: 메소드를 필수 메소드로 요구한다.

하지만 UIPickerViewDelegate 프로토콜은 pickerView:titleForRow:forComponent: 메소드를 필수로 요구하지는 않는다.

그럼 컨트롤마다 어떤 프로토콜을 따라야하는지, 또한 어떤 메소드를 써야하는지를 어떻게 알수있을까?

답은 Developer Document 에 있다.

직접 UIPickerView 컨트롤을 찾아보자


바로 나온다.

마찬가지로 각 프로토콜에서 필수적으로 요구하는 메소드를 찾아보자.




검색하면 다 나온다.

검색부터 해보는 습관을 들이자.




'공부 > iPhone' 카테고리의 다른 글

자주 쓰이는 프로퍼티 (Property) 속성  (0) 2010.10.02
아이폰개발 용어 2  (0) 2010.10.02
피커 (Picker)  (0) 2010.10.02
애플 API문서 보기  (0) 2010.10.02
View-Based Application 실행 과정  (1) 2010.10.02
Posted by terebyte
2010. 10. 2. 21:12
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

이분(?)이 피커(Picker)님이다.

Picker 나 Table 같이 데이터를 보여주는컨트롤들은 생명없는 인형다루듯 수족처럼 부리는게 아니고, 자아(?)가 있다.

내가 Picker 컨트롤을 생성하고 그 Picker에 데이터를 저장하고 이벤트발생시 처리할것들을 코딩하는게아니다.

컨트롤 스스로가 데이터를 요구하고 이벤트를 알려주므로 Data Source 파일과 Delegate 파일을 연결해주어야 한다.

Picker 의 경우는 몇 컬럼으로 되어있는지, 각 컬럼별로 몇 줄인지 등등을 Data Source 파일에게 요구를 한다.[각주:1]

따라서 Data Source 파일에 모두 적어주어야 한다.

각 컨트롤마다 Data Source 의 종류가 다른데 Picker는 UIPickerViewDatasource 라는 Data Source 를 필요로 한다.

마찬가지로 무언가 Picker 에 이벤트가 발생할경우에는 Delegate 에게 발생한 이벤트를 알려준다.

그럼 Delegate 는 이벤트를 해석하고 어떤 행동을 취해야할지를 Picker 에게 다시 알려준다.

Data Source 처럼 Delegate 도 컨트롤마다 종류가 다르며, Picker 의 경우는 UIPickerViewDelegate 라는 Delegate 를 필요로 한다.

이처럼 컨트롤들은 각자 자신만의 Data Source 와 Delegate 를 가지고 있다.

컨트롤들이 스스로 일을 처리할 수 있게 존중(?)해주자.
  1. Table 과 같은 기타 컨트롤들은 무슨 내용을 적어야하는지도 Data Source 에게 요구를 한다. 하지만 Picker 는 약간 특수한 경우로, 어떤 내용이 들어갈지를 Delegate 에게 요구한다. 그 이유는, Picker 는 다양하게 표현할수 있기 때문이다. 단순히 Data만 받아오지 않고 Delegate 에게 뷰의 형태로 받아온다. [본문으로]

'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 2  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
애플 API문서 보기  (0) 2010.10.02
View-Based Application 실행 과정  (1) 2010.10.02
아이폰개발 용어 1  (1) 2010.10.02
Posted by terebyte
2010. 10. 2. 20:55
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

XCode에서 Help - Developer Documentation 메뉴를 보면 볼수있다.


단축키는 (Option + Command + ?)이다.




물론 문서는 전부 영어다.

하지만 기본적인 영어실력만 있다면 충분히 해석가능하니까 지레 겁먹지말고 좀 찾아보자.

검색하면 다 나온다.

'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 2  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
피커 (Picker)  (0) 2010.10.02
View-Based Application 실행 과정  (1) 2010.10.02
아이폰개발 용어 1  (1) 2010.10.02
Posted by terebyte
2010. 10. 2. 20:35
먼저 이 글은 모두 Head First iPhone Development 책을 읽고 내게 필요한 부분, 중요한 부분, 느낀점등을 잊지 않기위해, 나중에 글쓴이가 봤을 때 왜 이렇게 했었는지 등을 다시 한번 확인하기 위해 작성한것임을 밝힙니다.

1. 맨처음 main()이 실행된다.
2. main() 함수가 UIApplicationMain()을 실행한다.
UIApplicationMain()은 Info.plist 파일을 이용해서 어떤 NIB파일을 로드할지 알아낸다.
3. NIB파일에는 AppDelegate와 ViewController의 인스턴스가있는데, 코코아 프레임워크는 먼저 ViewController의 인스턴스를 생성한후, 이 인스턴스가 ViewController.xib파일을 로드하도록 한다[각주:1]. (File's Owner)
4.  ViewController의 인스턴스는 File's Owner가 되고 NIB파일에 들어있는 항목들을 소유하게 된다. (NIB파일안에 있는 컴포넌트의 인스턴스들이 ViewController인스턴스의 아웃렛에 연결된다)
5. 결국 File's Owner와 컨트롤이 연결되어서 이벤트를 발생시키면, ViewController(File's Owner)의 인스턴스의 메소드를 호출하게된다.

* File's Owner (파일 소유자 객체)

맞나..?
  1. *실지로 File's Owner는 단지 포인터 역할을 한다. NIB파일이 로드된 후, 이 NIB파일을 로드한 객체를 가리키게 된다. 이 경우 NIB파일을 로드하는 객체가 ViewController의 인스턴스이므로 File's Owner가 ViewController의 인스턴스를 가리키게 된다. [본문으로]

'공부 > iPhone' 카테고리의 다른 글

아이폰개발 용어 2  (0) 2010.10.02
프로토콜 (Protocol)  (0) 2010.10.02
피커 (Picker)  (0) 2010.10.02
애플 API문서 보기  (0) 2010.10.02
아이폰개발 용어 1  (1) 2010.10.02
Posted by terebyte