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,797 Visitors up to today!
Today 0 hit, Yesterday 2 hit
daisy rss
tistory 티스토리 가입하기!
'버그'에 해당되는 글 2건
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
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
prev"" #1 next