'분류 전체보기'에 해당되는 글 61건

  1. 2010.12.15 아 귀찮아 2
  2. 2010.12.15 내일로 여행기 첫째날
  3. 2010.10.08 기다리던 메일 도착! 1
  4. 2010.10.03 아이폰개발 용어 4
  5. 2010.10.03 아이폰개발 용어 3
  6. 2010.10.02 메모리 관리
  7. 2010.10.02 자주 쓰이는 프로퍼티 (Property) 속성
  8. 2010.10.02 아이폰개발 용어 2
  9. 2010.10.02 프로토콜 (Protocol)
  10. 2010.10.02 피커 (Picker)
2010. 12. 15. 17:01
방금전까지 열심히 내일로 여행기를 쓰고있었다

그런데 1일차 쓰는데만 1시간이 넘게 걸리면서 회의감이 들기 시작했다 -_-;;

이거 언제 7일차 까지 다쓰지..?

그래서 그냥 갈아엎고 안올리기로 생각이 바뀌었다....................

역시 뭔가 하기엔 귀찮아...

그래도 얼마 안남은시간 잘 쓰려면 매일 글하나씩은 남겨야겠다

'일상의흔적' 카테고리의 다른 글

3 Idiots  (0) 2010.12.23
하드 업!  (0) 2010.12.22
내일로 여행기 첫째날  (0) 2010.12.15
포스팅  (0) 2010.08.16
휴학신고  (0) 2010.02.16
Posted by terebyte
2010. 12. 15. 16:27

내일로 다녀온지 반년이 지나서 여행기를 쓰려니 세부적인 사항들은 기억도 잘안나고 이게 뭐하는 짓인지...



서울역에서 도착해서 JY를 만났다. 어제도 왔던 서울역이다. 

KTX열차티켓을 구입하고 열차출발시간까지 기다렸다. 

아까 긴장해서 실수를 했던것때문에 혹시나 하는 생각에 멀미약을 하나 사먹었다. 

서울역에서 기차를 탄게 아마 6살~7살 이후로 처음이었던것 같다. 

서울역이 바뀐 모습을 보니까 굉장히 멋있었다. 언제 이렇게 바뀐거지? 




잠시 서울역을 서성이다가 열차시간이 가까워져서 승강장으로 나가기 시작했다.




KTX안에 들어가니 그냥 일반 기차와 비슷해 보였다.
 복도가 조금 더 좁고 의자가 더 길다랗달까..? 
다른 열차들과 비교해보면 별 다른점이 없었다. 
태어나서 처음타는 KTX라서 큰 기대를 했는데 별거 없었다.
 하지만 열차가 출발할때라던지 열차가 달릴때 승차감은 확실하게 달랐다.
 맨 처음 열차가 출발할때는 출발하는지 조차 모를정도로 (물론 다른데 신경쓰고있었지만) 조용히 출발을 했다. 
속도도 굉장히 빨랐는데 승차감은 다른 열차보다 훨씬 나았다.


Adios SEOUL


 서울에서 부산까지 고작 2시간40분 만에 도착했다. 
정말 부산에 볼일이 있어서 서울에서 하루만에 다녀올수도 있겠다 싶었다. 
부산역을 나서자 서울과 다른 점이 조금씩 보였다. 
역 안의 구조도 그렇고 주위의 사람들이 부산 사투리를 쓰는것을보자 감회가 새로웠다. 



부산 지하철 1일 이용권을 구입하려다가 일부러 만든 KB체크카드의 후불교통카드기능을 시험해보기위해 그냥 지하철을 탔다. 
KB체크카드가 전국적으로 망이 가장 넓다던데 부산에서 결제가 되는걸 보고 정말 세상 참 좋아졌다 싶었다.


우리는 부산역에서 남포동 역으로 갔다. 
남포동역에서 내려서 가장 먼저 간곳은 용두산공원이였다. 
역에서 내려서 건물사이로 조금 걸어가자 광복동거리가 나왔다. 
하지만 사람들도 많이 없고 아직 대낮이라 무시하고 목적지였던 용두산공원으로 향했다. 


용두산공원의 입구는 비닐하우스 모양의 지붕으로 둘러쌓인 에스컬레이터와 계단으로 이루어져있었다.
 그런데 무더위에 햇볕이 그대로 내리쬐는터이라 온실효과때문인지 그안은 매우 찜통이였다. 
중간중간에 창문을 열어놓았지만 오히려 그 창문으로 열기만 들어올뿐이었다. 
에스컬레이터를 약 4번정도 타고 올라가자 계단이 나타났다. 



그리고 그 계단을 오르자 용두산타워(현 부산타워) 가 보이기 시작했다. 
종과 이순신장군의 동상, 그리고 의미를 잘모르겠지만 전각도 나타났다.
 꽃시계도 있었는데 그 꽃시계는 조금 특별하다고 했다.
 전국에 꽃시계가 많지만 초침까지 움직이는 꽃시계는 용두산공원의 꽃시계가 유일하다고 들었다. 
꽃시계를 넘어서 용두산 타워로 향했다. 입장료 3,500원을 내고 안으로 들어갔다. 
미모의(?) 안내원분께서 표를 확인한뒤 엘리베이터로 안내해줬다. 
그런데 갑자기 엘리베이터 문이열렸다. 그안에도 또다른 미모의(?) 안내원 분이 있었다. 
흔히말하는 엘리베이터걸(?)의 역할을 하는것 같았다. 
지금 생각을 해보니 손님이 올때까지 그안에서 혼자 있었다는걸 생각하니까 
말이라도 몇마디 붙여줄걸 싶지만 그때는 둘다 조금 지쳐서 말없이 조용히 올라갔다. 


01234


꼭대기에 도착해서 엘리베이터를 나섰다. 

꼭대기는 3층으로 이루어졌는데 1층은 카페였고, 2층은 전망대, 3층은 출입금지라서 올라가보진 못했지만 기계실인듯 싶었다.

2층으로 올라가는 계단은 유람선이나 배의 계단마냥 좁았다.

2층으로 올라가자 넓은 창문으로 부산이 훤히 보였다.

저멀리 E-MART 라고 써져있는 배가 보이는가 하면 또 잔디구장이 있는 초등학교도 보였고

자갈치수산시장건물과 롯데백화점의 옥상도 보였다.

넓은 바다를 보니 이제 진짜 여행을 온듯한 느낌이 들었다.

그런데 도착해서 생각난것이 저번에 용두산공원을 방문했을때 야경이 훨씬 멋있다는걸 알고 다음에는 밤에 방문해야지 했었는데

그걸 또 까먹고 낮에 와버린것이다. 물론 낮에도 굉장히 예뻤지만 조금 아쉬웠다.

한참을 사진을 찍고 구경을 했다. 2층에는 중국인과, 서양인등 외국인 관람객도 굉장히 많았다.

 잠시후 엘리베이터가 내려간다는 소리를 듣고 우리는 재빨리 엘리베이터를 찾았지만 이미 엘리베이터는 내려가버린 후였다.

 다시 엘리베이터가 올라올때까지 다시한번 돌았다.

 뜬금없지만 세계 각국의 물건들도 한쪽에 전시되어있었다.

잠시후 엘리베이터가 도착해서 우린 다시 지상으로 내려갔다.

우리는 용두산공원을 나서서 이번엔 아까 본 자갈치수산시장건물로 향했다. 




자갈치수산물시장쪽으로 가면 갈수록 바다내음이 점점 코를 찔러왔다. 
여행 초기라 그런지 소금냄새마저 너무 좋았다.
 잠시후 수산물 시장에 도착해 1층으로 들어갔다. 
예전처럼 사람들이 우리를 용산전자상가에서 처럼 붙잡을까 싶어서 한번 들어가 보았지만 이번엔 별로 붙잡지를 않았다. 
그래서 우린 그대로 옥상으로 향하기로 했다. 옥상으로가는 엘리베이터를 타기 위해 2층으로 올라갔다.
 2층에서는 1층에서 주문한 생선을 먹는 그런 구조였다. 2층에서 엘리베이터로 가는잠깐동안 한 남자분께서 회를 먹고 가라고 붙잡았다. 
나는 웃으면서 아니라고 손짓을 했는데, 갑자기 남자분이 'Excuse me? can you speak english?' 라고 했다.
 우리는 그냥 지나쳤지만 지금 생각해보니 우리가 한국말을 못한다고 손짓을한 일본인 혹은 중국인 관광객이라고 생각한듯 싶다. 
엘리베이터를 타고 옥상에 도착했다. 


012

높은곳으로 올라가니 바다바람이 우릴 반겨주었다.
 서울에서 부산까지 오는데 흘린 땀이 전부 날아가는듯 싶었다.
 찌는 듯한 무더위에 지쳐있던 심신이 절로 힘이 솟아나는듯 싶었다. 
망원경또한 다른 관광지와 달리 무료였기때문에 바다를 신나게 보았다. 
남부지방은 비가 많이 온다고해서 굉장히 걱정을 많이했었는데 비는 커녕 하늘이 굉장히 맑았다.
 서울에서는 볼수없었던 하늘이였다. 열을 모두 식히고 조금 추워지는듯 싶을때 우린 수산물 시장을 내려와 점심을 먹기로 했다. 

012

점심은 JY가 지인에게 추천받은 밀면을 먹기로 했다. 

우린 점심을 먹기위해 밀면을 잘한다는 집을 찾아가려고 부산역으로 다시 향했다. 

우린 부산역에 도착해서 일단 무거운 짐을 라커에 맡기려고 했다. 

라커에 맡기는데 비용은 1,000원 이였다. 1,000원을 투입했는데 돈을 도로 뱉어냈다. 몹쓸것

난 바지에 정성껏 문지르고 허경영을 세번 외치며 돈을 넣었다. 

이번엔 돈을 도로 뱉어내지 않았다. 성공!.... 인줄알았는데 돈을 기계가 먹어버렸다... 이게 다 허경영 탓이다. 

JY가 고장신고를 하고서 몇분이 지나도 직원분께서는 오지않아 내가 재촉전화를 한번 더했다. 

그러자 잠시후 직원분이 오셔서 고쳐주셨다. 우린 짐을 라커에 넣고 부산역을 나왔다. 

쨍쨍 내리쬐는 햇빛을 맞아가며 5분정도를 걸어서 마치 영화 '바람의 파이터'나 드라마 '야인시대'에 나오는

 난장을 연상케하는 시장으로 들어갔다. 옆에 조그마한 가게가 있었다.

 '황산밀냉면' 이라는 밀냉면 전문 가게였다. 나는 '밀면', JY는 '밀비빔면'을 시켰다. 

벽에는 신문과 TV에 나왔던것들이 자랑스럽게 걸려있었다.테이블은 약 4~5개 뿐이었지만 맛집으로 소문이나 다들 찾아오는것 같았다. 

잠시후 음식이 나왔다. 일반 냉면과 달리 밀로 만든 면이라 맛이 특이했다. 몇입 먹지 않아 나는 그 맛에 중독되어 마구 먹었다. 

지금생각해도 너무 맛있었다. 서울에가서 또 먹었으면 싶었다. 냉면을 다먹고 우린 다시 부산역으로 향했다.





'일상의흔적' 카테고리의 다른 글

하드 업!  (0) 2010.12.22
아 귀찮아  (2) 2010.12.15
포스팅  (0) 2010.08.16
휴학신고  (0) 2010.02.16
앨범구입  (0) 2010.02.09
Posted by terebyte
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