BLOG main image
분류 전체보기 (92)
Cocoa Touch (11)
Cocoa (10)
Objective-C (13)
Swift (6)
Development (11)
Tools (11)
Books (7)
etc (21)
Application release (1)
Document Project (1)
105,849 Visitors up to today!
Today 0 hit, Yesterday 5 hit
daisy rss
tistory 티스토리 가입하기!
'아이폰'에 해당되는 글 9건
2010. 12. 26. 23:34
MainWindow.xib에다 view controller를 인스턴스화 시켜놓고 그것을 App delegate의 아웃렛에 연결해서 아래와 같은 코드로 윈도우에 올리는 방식으로 흔히들 뷰를 붙이게 된다.

[[self window] addSubview:[mViewController view]];

[[self window] makeKeyAndVisible];


이 방식은 뷰 기반의 아이폰 프로젝트를 처음 생성하면 볼 수 있다.

하지만 이렇게 사용하지 않고 가끔 뷰 컨트롤러를  커스터마이징 해서 사용할려고 하면 아래쪽에 20픽셀이 위로 올라가서 뷰가 붙어 버리는 현상을 만나게 된다. 실제 뷰가 놓여야 할 위치가 (0, 20, 320, 460)인데 (0, 0, 320, 460)에 붙어버리기 때문에 발생하는 현상이다. 이때 이 현상을 조절하는 view controller의 attribute에 있는 "resize view from nib" 옵션(이 옵션을 켜두면 알아서 20픽셀 아래로 정확히 우리가 원하는 위치에 뷰가 붙어준다.)은 Interface Builder 환경하에서 뷰 컨트롤러의 인스턴스화 된 객체에 대해서만 사용할 수 있다. 즉, 코드로 뷰 컨트롤러를 동적으로 올리겠다고 생각했다면 이 옵션 자체를 볼 수가 없다.

그러다보니 항상 20픽셀의 오차가 생기고 일반적으로 강제로 setFrame:CGRectMake(0, 20, 320, 460) 같은 코드를 넣게 되는데 이런 하드코딩된 뷰사이즈는 아이패드로 포팅할 때 또는 그 외의 경우에 항상 발목을 잡게 된다.
그러면 어떻게 하면 정확히 현재 내가 표시할 영역을 알 수 있을까? UIScreen에 있는 applicationFrame이 그 역할을 해줄 수 있는데 이건 단순히 status bar가 차지하는 20픽셀 뿐만 아니라 In-Call Status bar영역까지 판단해서 실제 애플리케이션의 프래임 역역을 알려주기 때문에 매우 유용하다. 만일 전화가 와서 In-Call Status bar가 표시되고 있다면 상단의 40픽셀을 제외한 영역을 실제 뷰가 올라갈 영역이라고 알려준다.

즉, 뷰 컨트롤러를 동적으로 올린 후 뷰를 윈도우에 올릴때 정확한 사이즈로 올리는 최선의 방법은 아래와 같은 방법이 되지 않을까 한다.

- (void)viewWillAppear:(BOOL)aAnimated

{

    [super viewWillAppear:aAnimated];

    [[self view] setFrame:[[UIScreen mainScreen] applicationFrame]];

}


Name
Password
Homepage
Secret
2010. 9. 27. 15:31

/var/folders/rV/rVMdDExnEyO8m0V70V9+TE+++TI/-Tmp-/AppName/


이렇게 이상야릇한 위치에 있군요. 원래 그랬었는지 기억도 가물 가물...

하여간 시뮬레이터 앱에서 이것 리셋 시킬 방법이 존재하지 않는것 같습니다. (뭐 워낙 날림으로 대충 메뉴 쭉 훑어봐서 못본 것일 수도 있지만... 아, Reset Contents and Settings...로는 안되더이다)

뭐 리부팅하면 지워줄것 같기는 한데, 그거하자고 리부팅 할 수 없으니 터미널로 스슥~ rm -rf


Name
Password
Homepage
Secret
2009. 12. 24. 11:00
예전에 잠깐 검토하다가 엄청난 삽질을 해야 한다는 걸 알고 보류해뒀는데 그 사이 누군가 그 삽질을 해놨군요.
폰트에 대해서 매우 잘 알고 있는 사람이 만든것 같습니다. :)
한글도 잘 출력되는 것을 확인했습니다.


라이센스도 착하군요!
Name
Password
Homepage
Secret
2009. 12. 1. 17:54

아무래도 한글을 처리 할 일이 많다.

그 중 소팅은 단연 중요하고 많이 처리되는 일인데, 코코아에서 아래와 같은 코드는 어떤 결과를 보여주게 될까?



NSArray *sTemp        = [NSArray arrayWithObjects:@"하루", @"허씨", @"한국인", @"호빵", @"하늘", nil];

NSArray *sSortedArray = [sTemp sortedArrayUsingSelector:@selector(compare:)];


for (NSString *str in sSortedArray)

{

    NSLog(str);

}



결과

2009-12-01 17:47:58.369 Test[1859:10b] 하늘

2009-12-01 17:47:58.371 Test[1859:10b] 호빵

2009-12-01 17:47:58.372 Test[1859:10b] 한국인

2009-12-01 17:47:58.372 Test[1859:10b] 허씨

2009-12-01 17:47:58.372 Test[1859:10b] 하루


이건 뭐... T_T;;;

(Mac OS X 10.5, 10.6, iPhone 모두에서 발생)


애플에 이야기 하긴 했는데 언제나 고쳐질지는 의문.

difro | 2009.12.01 23:28 | PERMALINK | EDIT/DEL | REPLY
@selector(compare:) 대신 @selector(localizedCompare:) 를 쓰니까 잘 되네요. (Mac 10.6 에서 테스트)
2009-12-01 23:26:36.602 Untitled[4808:a0f] 하늘
2009-12-01 23:26:36.603 Untitled[4808:a0f] 하루
2009-12-01 23:26:36.603 Untitled[4808:a0f] 한국인
2009-12-01 23:26:36.604 Untitled[4808:a0f] 허씨
2009-12-01 23:26:36.608 Untitled[4808:a0f] 호빵
maccrazy | 2009.12.02 09:59 신고 | PERMALINK | EDIT/DEL
흐잇.. 감사합니다. localizedCompare에서는 문제가 없군요. 다른 방법으로 해결했는데 localizedCompare를 쓰는게 더 편하군요. 그래도 compare:쪽 버그도 해결되어야 할 것 같기는 해요.
Name
Password
Homepage
Secret
2009. 2. 3. 16:31
코코아에서는 NSHost를 이용해서 쉽게 장비의 IP목록을 받아 올 수 있다.
코코아 터치에서는?

도큐먼트를 보니 코코아에서는 NSHost가 없다. 헉...
별짓 다 해봤다. gethostbyname도 써보고 getsockname도 써보고...
다 잘 안된다. gethostbyname은 원하는 값이 안나오고 getsockname은 용도가 맞지 않다. 이런...
머리를 싸매고 있다가 그래.. 구글링해보자. (사실 전에 이미 해봤다.)
그런데 이번에는 몇개 이상한 글이 눈에 띄었다. (전에는 왜 안보였는지 몰라.)
NSHost를 썼다고?? 그거 코코아 터치에는 없잖아... 어라.. 컴파일 된다. 비록 헤더가 없어서 워닝은 나지만 컴파일 잘 된다. 물론 실행도 되고...
단점이 있다면 시뮬레이터에서는 잘 안된다는 점... 애플은 이걸 왜 private로 숨겨놨을까? 이해가 안간다.
Name
Password
Homepage
Secret
2008. 12. 10. 15:30
[etc]
방통위, 위피 탑재 의무화 해제

드디어 올 것이 왔군요. 내년 4월 부터 자율에 맏기겠다는데 그럼 4월 이전 아이폰 출시는 힘든 것 일까요?
항간에 루머로 떠돌던 12월 출시설은 이렇게 되면... 어떻게 될까요?

여튼 국내에 빨리 출시되면 좋겠습니다. :) 뭐, 아이폰 소프트웨어 시장으로서는 국내는 별 매력이 없지만...
littlehj | 2008.12.12 17:20 신고 | PERMALINK | EDIT/DEL | REPLY
90만원이라는 말이 사실이라면 안살란당....
아이폰 징글징글 하넹...
그나저나 송년회 어케 됐으? 연락 기다린다 오버!!!
maccrazy | 2008.12.12 22:32 신고 | PERMALINK | EDIT/DEL
90만원이면 당근 안사죠. :) 뭐 약정기간이나 요금제 잘 보고 괜찮다 싶으면 30만원 이하에서는 살 용의도 있습니다.
그나저나... 다음 주 중에 한번 날 잡아보죠. 상혁이랑 이야기 해볼께요. :)
Name
Password
Homepage
Secret
2008. 11. 26. 14:10
UIView를 생성할 때 특정 사이즈 이상에서 자주 문제가 발생해서 골탕을 먹고 있었다. 2.2로 업데이트 된 후로 더 제약이 많아진 것 같다는 생각을 하면서 UIView의 문서를 봤다.
2.2 문서에 예전에 없던 문장이 추가된게 보인다.

Note: UIView instances have a maximum height and width of 1024 x 1024. Views larger than this must be creating using CATiledLayers.


애플... 때려버리고 싶다. T_T
han9kin | 2008.11.26 21:26 신고 | PERMALINK | EDIT/DEL | REPLY
Note대로 CATiledLayer를 사용하는 View를 만들면 되지 않나요?
maccrazy | 2008.11.27 09:46 신고 | PERMALINK | EDIT/DEL
문제는 예전 버전 부터 쭉~ 저 문제를 내포하고있었는데 이제야 도큐먼트에 올라왔다는게... T_T
박종암 | 2008.12.06 13:58 | PERMALINK | EDIT/DEL | REPLY
Google Phone!!!!!
이 기회에 스위칭 하시죠오~ :)
아! Google Phone은 자바다!!!
Name
Password
Homepage
Secret
2008. 11. 10. 23:41
지난 한주간 참 어이없는 버그 때문에 시간을 보냈다. 도저히 버그가 있으리라고 상상조차 하기 힘든 위치에서 치명적인 버그(?)와 마주친 것이다. 애플이 이 부분을 공식적인 버그로 등록했는지는 모르겠다. 구글링 해보니 최초로 이 버그를 사람들이 인식한게 2.0 버전이었는데 2.1에서도 고쳐지지 않은듯 하다.
CFNetwork에 심각한 메모리 누수 현상이 있다. 정말 상상 할 수 없는 일이다. 네트웍 레이어는 통상 현대적인 OS에서 가장 중요한 부분 중 하나고 사용빈도도 매우 높다. 그런데 여기에 버그라니... 사실 정확히 CFNetwork안에 버그가 존재하는지 상위의 NSURLConnection이나 NSURLDownload에 있는지는 모르겠으나 initWithContentOfURL같은 메소드에서도 동일하게 재현되는걸로 보아 상당히 하부에 존재하는 것 같다.
아이폰이 모바일 장비라는 특성을 가지고 있어서 대부분 많은 네트웍 패킷을 주고 받지 않아서 이 버그가 부각되지 않았는지는 모르겠지만 다운로드 된 패킷의 크기만큼의 메모리가 고스란히 날아가는 걸로 보아서 조금만 트래픽이 과한 애플리케이션은 요주의 리스트에 올라갈 것 같다.
여러 개발자 포럼에서 혹자는, 캐쉬를 비워보라는 둥, AutoreleasePool로 싸보라는 둥 대안을 제시하고 있지만, 택도 없는 소리다. 전혀 소용없다.

단 한가지 대안은 BSD Socket으로 필요한 부분을 모두 구현하는것! 오늘 기본적은 HTTP프로토콜을 구현해서 돌려본 결과 그 경우 메모리 손실은 없었다.

다음 업데이트때 해결될런지 장담 할 수 없어서 일단 구현해서 사용하기는 하나 그때 그때 필요한 프로토콜을 맨땅에서 하나씩 새로 구현해야 한다는건 정말 머리를 쥐어뜯고 싶어지는 상황이다.
littlehj | 2008.11.14 09:51 신고 | PERMALINK | EDIT/DEL | REPLY
인스트루먼트로 보니까...줄줄줄 세는 게 나오데.....고쳐지겠지....저번 UITextField의 어처구니 없는 시뮬레이터 버그처럼....푸헐헐
박종암 | 2008.11.18 06:22 | PERMALINK | EDIT/DEL | REPLY
뭔가 이상해지죠?
valloc도 버그가 있던데.. 지는 메모리 할당했다고 하는데, 실지는 할당 안된 경우가 많이 생기더군요.
박종암 | 2008.11.21 01:22 | PERMALINK | EDIT/DEL | REPLY
이거랑 관련 있나요? http://www.iphonedevsdk.com/forum/iphone-sdk-development/1234-cfnetwork-senddidreceivedatacallback-autorelease-leak.html
maccrazy | 2008.11.21 13:05 신고 | PERMALINK | EDIT/DEL
예. 그 버그예요. 여기저기서 말은 많이 나와있는데 네트웍 부분을 새로 작업하는 것 말고는 제대로 된 방법을 제시하는데가 없네요. :(
Name
Password
Homepage
Secret
2008. 8. 26. 16:19
[etc]
아이폰이 온다고?…보안업계 ‘방긋’

아놔.. 난 당신네 백신이 아이폰용 바이러스보다 더 무섭다오...


아이폰용 바이러스가 그리 빨리 나타날것 같지도 않고
나타났다고 해서 국내 보안업체들이 어떻게 해줄 수 있을것 같지도 않고...

설마 윈도우 모바일용 백신을 아이폰 사용자들에게 팔아먹을려는건 아니겠지요??
박종암 | 2008.08.27 06:45 | PERMALINK | EDIT/DEL | REPLY
iPhone 1호 바이러스!
오빠 나 한가해~ ㅎㅎ
maccrazy | 2008.08.27 09:38 신고 | PERMALINK | EDIT/DEL
ㅋㅋ 순간적으로 스팸인줄 알았어요.
Name
Password
Homepage
Secret
prev"" #1 next