Outsider's Dev Story: Mobile/iOS 카테고리 글 목록https://blog.outsider.ne.kr/Stay Hungry. Stay Foolish. Don't Be Satisfied.2024-03-15T10:10:48+09:00Textcube 1.10.7 : Tempo primoXcode 4에서 Interface Builder로 IBOutlet 코드 자동 생성하기Outsiderhttps://blog.outsider.ne.kr/7092011-10-24T01:39:50+09:002011-10-24T01:39:50+09:00보통은 IBOutlet 코드를 작성하고 인터페이스빌더에서 UI 아이템을 만든뒤에 코드에 작성한 IBOutlet 프로퍼티에 연결하는 방식으로 작성합니다. Xcode 4에 아직 적응이 많이 안된 상태이긴 한데 오늘 Xcode 4의 Interface Builder로 IBOutlet 관련코드를 자동생성할 수 있다는 것을 알게 되었습니다. <br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1091063197.gif" alt="Show Assistant Editor 메뉴를 선택하는 화면" height="294" width="507" /></div><br>인터페이스빌더에서 먼저 View에서 "Show Assistant Editor"를 선택합니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1202067822.gif" alt="인터페이스빌더에 Show Assistant Editor가 나타난 화면" height="285" width="550" /></div><br>그러면 인터페이스 빌더 우측에(위에서 Assistant Editors on Right를 선택했기 때문에) Assistant Editor가 나타난 것을 볼 수 있습니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1126798611.gif" alt="Show Assistant Editor로 UIButton을 드래그하는 화면" height="408" width="550" /></div><br>xib에 만들어 놓은 버튼을 Ctrl을 누른 상태에서 Assistant Editor에 나타난 .h 파일로 마우스로 드래그하면 위화면처럼 "Insert Outlet, Action, or Outlet Collection"라고 나타납니다. <br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1013939665.gif" alt="IBOutlet 관련 코드 생성을 위한 레이어가 나온 화면" height="365" width="550" /></div><br>이제 위 화면처럼 레이어가 나타나면서 프로퍼니의 이름을 입력하고 관련 타입을 선택할 수 있게 나타납니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1037981861.gif" alt="자동생성된 IBOutlet 코드" height="158" width="550" /></div><br>왼쪽은 m파일이고 오른쪽은 h파일입니다. 보는 바와같이 버튼에 대한 @property코드와 @syntesize코드가 자동으로 생성된 것을 볼 수 있습니다. 매번 코드작성해서 연결하는 것보다는 편한것 같군요. (좋은 팁을 알려주신 <a href="http://nephilim.tistory.com/" target="_blank">nephilim님</a>께 감사~ ㅎ)<br><p><strong><a href="https://blog.outsider.ne.kr/709?commentInput=true#entry709WriteComment">댓글 쓰기</a></strong></p>Xcode 3 과 Xcode 4 를 동시에 설치하기Outsiderhttps://blog.outsider.ne.kr/6582011-06-24T01:46:04+09:002011-06-24T01:46:04+09:00iOS의 개발도구인 Xcode의 버전이 3.2.x에서 4.x로 올라가면서 기존의 인터페이스가 대폭변경되었습니다. Interface Builder가 Xcode로 통합되는등 전체적인 인터페이스가 달라진 관계로 개발자들 사이에서도 약간 호불호가 갈리는 것 같습니다. 저는 이때문에 그동안은 4.x로 업그래이드 하지 않고 않고 있었는데 이유는 iOS를 배우고 있는 상황이기 때문에 3.2에도 많이 익숙하지 않은 상황에서 4에 적응하기 위한 부담도 있었고 현재 대부분의 iOS 개발서적이나 자료들이 Xcode 3을 기준으로 되어 있기 때문에 4로 갔을때 메뉴를 찾기 어려운 부분등에 대한 문제도 있기 때문이었습니다.<br><br>이번에 OSX를 새로 설치하는 김에 찾아보고 2개의 버전을 동시에 설치했습니다. 사용한 버전은 Xcode 3.2.6과 Xcode 4.0.2입니다. 기본적으로 <span style="color: rgb(204, 153, 0);">Xcode는 <span style="color: rgb(255, 118, 53);">/Developer</span>에 설치가 되는데 한가지 버전은 기본폴더에 설치하고 다른 버전은 다른 폴더에 설치하는 방식입니다.</span>(생각보다 쉬워서 여태 왜 안찾아봤나 싶더군요.)<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1347392485.png" alt="Xcode 3를 설치할 폴더를 선택하는 화면 " height="390" width="550" /></div><br>저는 <span style="color: rgb(204, 153, 0);">Xcode 3을 먼저 설치했고 앞으로는 4버전을 주로 사용해야할 것 같아서 Xcode 3를 다른 폴더에 설치했습니다. Xcode 설치과정중 설치유형과정에서 Essentials의 위치를 클릭해서 <span style="color: rgb(255, 118, 53);">/Xcode3</span> 폴더를 만들어서 선택해 줍니다.</span><br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1240374015.png" alt="설치경로가 Xcode3로 선택된 화면" height="390" width="550" /></div><br>Essentials의 설치위치가 <span style="color: rgb(255, 118, 53);">/Xcode3</span>로 지정된 것을 볼 수 있습니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1288446946.png" alt="기본설정으로 Xcode 4를 설치하는 화면" height="390" width="550" /></div><br>이제 <span style="color: rgb(204, 153, 0);">Xcode 4를 설치하는데 이번에는 설치위치를 변경하지 않고 기본인 <span style="color: rgb(255, 118, 53);">/Developer</span>에 설치를 해줍니다.</span><br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1097247263.jpg" alt="Dock에서 아이콘을 유지시키는 화면 " height="214" width="464" /></div><br><span style="color: rgb(204, 153, 0);">설치후에 응용 프로그램 폴더에 Xcode가 나타나지 않기 때문에 각 설치폴더의(/Developer와 /Xcode3)의 Applicaions 폴더안에 있는 xcode아이콘으로 애플리케이션을 실행해 주면 Dock에 나타나는데 여기서 Dock에 유지를 선택해 주면 프로그램을 종료해서 Dock을 통해서 실행할 수 있습니다.</span><br><br><br><p><strong><a href="https://blog.outsider.ne.kr/658?commentInput=true#entry658WriteComment">댓글 쓰기</a></strong></p>iOS 스터디 시즌2 회고Outsiderhttps://blog.outsider.ne.kr/6452011-05-24T01:12:19+09:002011-05-24T01:12:19+09:00지난 주말에 진행중이던 iOS스터디의 시즌2가 끝이 났습니다. 저희들은 La Objective-C 코딩단(이하 라오단)이라고 부르는데 이 이름은 그 이전에 진행했던 <a href="https://groups.google.com/group/scala-korea?hl=ko" target="_blank">한국 스칼라 유저그룹</a>의 이름은 <a href="http://blog.outsider.ne.kr/550" target="_blank">La Scala 코딩단</a>이라고 이름지으면서 프로그래밍언어에 대해서 산만한 관심사를 가지고 있는 저희로써는 시리즈로 라오단을 구성하게 되었습니다.(그냥 구분해서 부르기 위해서 그럴뿐 특정그룹의 모양새를 띄고 있는것은 아닙니다. ㅎ)<br><br>사실 라오단은 상당히 충동적(?)으로 시작되었습니다. 아이폰 개발이라는 것이 개발자들에게 상당히 여러가지로 영향을 주었는데(좋든 나쁘든) 많은 사람이 맥을 쓰고 있는 저희도 자연히 Objective-C나 iOS에 대해서 관심을 가지고 있었고 개인적으로 혼자 만져보는 사람들도 있었던 관계로 Objective-C도 좀 보면 어떨까 얘기하다가 진행이 되었습니다. 처음에는 스터디라기 보다는 다른 스터디가 끝나고(보통은 Scala 스터디) 남는 오후나 저녁시간에 간단히 카페에 모여서 <a href="http://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Guides" target="_blank">Apple의 iOS Programming Guide</a>를 챕터정해서 조금씩 보면서 같이 공부하는 정도로 4-5명이서 시작을 했었습니다.<br><br>그렇게 모이다가 iOS에 관심있는 사람들이 몇명씩 더 붙게 되고 그러면서 그냥 사이드로 하던 것에 한계를 느끼고 스터디로 진행을 하면서 시즌2를 시작했습니다.(부르기 편해서 미드방식으로 ㅋ) iOS PG를 보던것을 시즌 1으로 하고 시즌 2부터는 윤성관님의 <a href="http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8992649401" target="_blank">iPhone SDK 튜토리얼</a>를 교재를 선정해서 진행하게 되었습니다.(이론도 이론이지만 뭔가 좀 실습위주로 해보자는 의견이 많았습니다.)<br><br><br><br><br>라오단스터디 <a href="https://github.com/codeport/ios/wiki" target="_blank">시즌2는 총 6개 에피소드</a>로 진행되었습니다. ㅋ 2월 12일에 처음 모여서 5월 21일에 끝났으니 3달이 좀 더 걸렸습니다만 일정이 여의치 않아서 좀 띄엄띄엄 진행되었을 뿐 총 6번정도 모였습니다. 물론 교재의 전부를 다 나가지는 않았고 시즌2에서는 View, Table, Navigation Contoller가 중심인 8장까지만 진행하였습니다. 그 뒤부터는 그래픽이나 퍼시스턴트에 대해서 나오기 때문에 좀 다른 부분이라고 생각해서 8장까지만 끊어서 진행하였습니다. 그 이후로는 아마 시즌 3에서 하게될 가능성이 크기는 한데 아직 시즌 3에 대한 협의는 되지 않은 관계로 언제 어떻게 진행될지는 미지수입니다. ㅎ<br><br><span style="color: rgb(204, 153, 0);">일단 실습위주로 진행이 되니까 Objective-C에 적응도 되고 괜찮았던것 같습니다.</span> 윤성관님의 <a href="http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8992649401" target="_blank">iPhone SDK 튜토리얼</a>의 <span style="color: rgb(204, 153, 0);">모든 챕터가 예제애플리케이션을 만들어 볼 수 있는 형식으로 되어 있고 그냥 따라서 타이밍만 하는 것은 의미가 없기에 간단한 변형을 해서 공유하는 방식으로 진행이 되었는데 너무 이론만 보는것 보다는(물론 이것도 중요하긴 하지만요) 재미도 있고 익히기 좋았던 것 같습니다.</span> 실습위주의 진행도 점점 진행하면서 서로 조금씩 자연스러워졌던 것 같습니다.<br><br><span style="color: rgb(204, 153, 0);">후반부에 한번 간단한 구성의 코딩을 스터디 중에 한분이 실제로 코딩을 하고(너무 잘하시는 분이 하면 의미가 없는것 같아서 새로 참여하신 분으로) 다같이 보면서 이부분은 이렇게 해야한다. 저렇게 해야한다면서 의논을 하는 방식으로 진행을 했었는데 개인적으로 이런 진행방식이 괜찮았던 것 같습니다. 잘하는 사람이나 집에서 만들어 온 것을 설명하면서 볼때는 약간 수동적으로 듣게 되거나 모르는 부분인데도 설명들으면서 그냥 그런가보다 하면서 넘어가는 부분이 꽤 있는 편인데 이런식으로 진행을 하니 다같이 고민을 하면서 적극적으로 참여를 하게 되고 작성해야하는 문법을 말로 설명하다보니 궁금한 점이나 그런것을 같이 공유하면서 진행할 수 있었던 것 같습니다.</span> (항상 그렇게는 못해도 나중에 몇번 더 해보면 더움이 많이 될듯..)<br><br><span style="color: rgb(204, 153, 0);">마지막에는 졸작같은 형식으로 간단한 애플리케이션을 각자 만들어보고 만들어보면서 나온 이슈들을 공유하는 방식으로 진행을 하였는데 아무래도 책보고 예제해보는 것 이상으로 많은 시간을 투자해서 고민을 하면서 만들다 보니 도움이 많이 되었습니다.</span>(뭐 많은 시간을 들여서 코딩하다보니 어찌보면 당연한 결과이기는 하지만요 ㅎ)<br><br><div style="text-align: center;"><div class="imageblock dual" style="text-align: center;"><table cellspacing="5" cellpadding="0" border="0" style="margin: 0 auto;"><tr><td><img src="//blog.outsider.ne.kr/attach/1/1280758315.gif" alt="JavaDoc 예제 앱" height="410" width="275" /></td><td><img src="//blog.outsider.ne.kr/attach/1/1409962958.gif" alt="JavaDoc 예제 앱" height="412" width="275" /></td></tr></table></div>간단한 JavaDoc 파싱해서 보여주려던 애플리케이션.<br></div><br><span style="color: rgb(255, 118, 53);">꽤 급하게 진행하면서 인원변동도 좀 있었던 거에 비해서는 그래도 이론과 실습이 적절하게 배정되면서 제법 괜찮게 진행되었다고 생각합니다.</span> 다만 일정에 급급하게 스터디에서 나온 것들만 해보고 한것들이 아쉽기는 한데 이 말은 항상 제가 회고때마다 단골로 하는 말이기도 하고(ㅡㅡ;;) 여러가지 스터디등이 따로 진행되고 있었기에 처음부터 저 개인적으로는 라오단 스터디에 많은 중요도를 배정할 수가 없었기 때문에 개인적으로는 이정도로 익히는 속도는 감수하고 있는 편입니다. Objective-C도 하니까꽤 재미가 있군요.ㅎ<p><strong><a href="https://blog.outsider.ne.kr/645?commentInput=true#entry645WriteComment">댓글 쓰기</a></strong></p>iOS에서 디렉토리 경로에 따른 리소스 가져오기Outsiderhttps://blog.outsider.ne.kr/6422011-05-17T03:30:51+09:002011-05-17T03:30:51+09:00스터디 목적으로 간단한 프로젝트를 만들어 보고 있는데 JavaDoc의 HTML을 파싱해 보려고 했는데 그동안은 간단한 Nib나 이미지같은 리소스들만 사용하다가 다량의 html파일을 다루려고 하다보니 어려움이 있었습니다. 무엇보다 JavaDoc의 구조는 팩키지명으로된 계층형 폴더로 되어 있고 각 폴더에는 같은 이름의 파일들이 여럿이 존재합니다. <br><br>제가 아는 범위내에서 iOS는 리소스를 이름으로 찾는 구조로 되어 있습니다. nib나 이미지 파일등을 보통 이름으로 찾는 방식을 취하고 있습니다. 대표적으로 initWithNibName: bundle: 같은 메서드들이 있습니다. 그래서 <span style="color: rgb(204, 153, 0);">기존의 이름으로 가져오는 방식으로는 폴더경로에 따른 리소스를 가져올 수 없었고 pathForResource: ofType: inDirectory: 라는 특정디렉토리에서 리소스를 가져오는 메서드가 존재했지만 계속 nil만 리턴되었습니다.</span><br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1061214934.gif" alt="프로젝트의 리소스 구조 " height="170" width="220" /></div><br>예를 들어 Resources에 위와 같이 구굴의 <a href="http://code.google.com/p/guava-libraries/" target="_blank">guava</a>의 자바독을 추가했습니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1175878158.gif" alt="빌드후 타겟에 복사된 리소스 화면 " height="360" width="272" /></div><br>하지만 위처럼 <span style="color: rgb(204, 153, 0);">폴더구조의 리소스를 추가했다고 하더라도 Targets의 번들 리소스를 보면 위처럼 계층구조 없이 모두 들어가 있는 것을 볼 수 있습니다. </span>이렇기 때문에 폴더구조로 넣어고 계층형구조로 찾을수가 없고 유일한 이름으로 찾아야 합니다. <br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1273024562.gif" alt="리소스의 동일한 파일명때문에 컴파일 경고가 뜬 화면 " height="219" width="550" /></div><br>한곳에 모두 복사되기 때문에 컴파일을 하게 되면 위와 같이 <span style="color: rgb(255, 118, 53);">Multiple build commands for out file</span> 오류가 엄청나게 나오게 됩니다. 이것은 리<span style="color: rgb(204, 153, 0);">소스를 번들에 복사를 하는데 계층형이 없이 파일만 복사를 하게 되므로 동일한 파일이 겹치게 되서 중복경고가 발생하는 것입니다.</span><br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1217936160.gif" alt="그룹이 아닌 폴더로 복사하는 화면" height="355" width="390" /></div><br>이 문제를 해결하려면 <span style="color: rgb(204, 153, 0);">리소스를 프로젝트에 복사할때 일반적으로 선택하는 Recursibely create groups for any added folders대신에 Create Folder References for any added folders를 선택해서 추가해 주어야 합니다.</span><br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1038670808.gif" alt="사용자 삽입 이미지" height="257" width="256" /></div><br>이렇게 추가를 하게 되면 위 화면처럼 <span style="color: rgb(204, 153, 0);">기존의 리소스가 그룹을 의미하는 노란색으로 표시된 데 반해 폴더는 파란색 폴더로 표시되게 됩니다. 그리고 Targets에도 번들 리소스에 폴더의 계층이 그대로 복사된 것을 볼 수 있습니다. 이제 <span style="color: rgb(255, 118, 53);">pathForResource: ofType: inDirectory:</span>를 사용해서 원하는 리소스를 찾을 Resources이하의 디렉토리경로를 지정해 주면 경로에 따른 파일을 가져올 수 있습니다.</span><br><p><strong><a href="https://blog.outsider.ne.kr/642?commentInput=true#entry642WriteComment">댓글 쓰기</a></strong></p>Objective-C에서 private 메서드 사용하기Outsiderhttps://blog.outsider.ne.kr/6402011-05-12T02:04:06+09:002011-05-12T01:56:25+09:00Objective-C에는 다른언어들처럼 메서드에 대해서 접근제어를 하는 public/private같은 예약어가 존재하지 않기 때문에 <span style="color: rgb(204, 153, 0);"><span style="color: rgb(255, 118, 53);">실제로 private 메서드가 존재하지 않습니다.</span></span>(Objective-C를 잘 모르지만 @private는 인스턴스 변수에만 사용가능한 것으로 알고 있습니다. 여기저기 찾아봤는데 왜 Objective-C에는 Private Methods가 없는가에 대한 얘기는 <a href="http://stackoverflow.com/questions/2158660/why-doesnt-objective-c-support-private-methods" target="_blank">이 글</a>의 답변이 제일 나은것 같습니다.)<span style="color: rgb(204, 153, 0);"> 다만 .h파일의 인터페이스에 메서드의 시그니처를 명시해서 외부에서 보이도록 할 수 있습니다. 하지만 클래스내에서는 외부에 노출할 필요는 없지만 클래스 내부에서만 사용하기위한 private 메서드가 필요합니다. </span><br><br><pre class="line-numbers"><code class="language-objc">
// PackagesViewController.h
#import <UIKit/UIKit.h>
@interface PackagesViewController : UITableViewController {
NSMutableArray *packages;
}
@end
</code></pre><br><pre class="line-numbers"><code class="language-objc">
// PackagesViewController.m
#import "PackagesViewController.h"
@implementation PackagesViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self findGroup:packages];
}
- (void)findGroup:(NSMutableArray *)array {
}
@end
</code></pre><br>예를 들어 위와같이 private 메서드목적으로 findGroup메서드를 정의할 수 있고 이 메서드는 .h파일에는 명시하지 않았고 위에서 <span style="color: rgb(255, 118, 53);">[self findGroup]</span>와 같은 형태로 호출을 합니다.<br><br>하지만 여기에 <span style="color: rgb(204, 153, 0);">문제가 있는데 컴파일러가 private 메서드의 여부를 알지 못한다는 것입니다.</span> 컴파일러는 .h파일에 정의된 선언만 확인하기 때문입니다. 때문에 @implementation부분에서 private 메서드를 호출할 경우 해당 메서드는 .h파일에 정의가 안되어있으므로 아래 화면처런 findGroup가 없다는 경고메시지를 보여줍니다. 물론 실제로는 동작하기 때문에 실행을 하면 findGroup가 정상적으로 호출이 됩니다.(컴파일러가 메서드의 존재여부에 대한 정보를 가질 수 없었을 뿐입니다.) 하지만 개발자로써 의도한 정상적인 코드에 경고메시지가 나타나는 것은 상당히 신경쓰이는 일입니다.<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1312207601.gif" alt="사용자 삽입 이미지" height="108" width="524" /></div><br>이 문제를 <span style="color: rgb(204, 153, 0);">카테고리 기능을 사용해서 해결할 수 있습니다. </span><br><br><pre class="line-numbers"><code class="language-objc">
// PackagesViewController.m
#import "PackagesViewController.h"
@interface PackagesViewController(Private)
- (void)findGroup:(NSMutableArray *)array;
@end
@implementation PackagesViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self findGroup:packages];
}
@end
@implementation PackagesViewController (Private)
- (void)findGroup:(NSMutableArray *)array {
}
@end
</code></pre><br>위와 같이 카테고리 기능을 이용해서 Private라는 이름의(다른 이름도 됩니다.) 카테고리를 만들고 이 카테고리를 구현한 @implementation을 정의해서 이곳에 메서드를 구현해 주면 됩니다. 이렇게 구현하면 컴파일러 경고 없이 private method를 사용할 수 있습니다. 구현부를 따로 나누고 싶지 않다면 <span style="color: rgb(204, 153, 0);">이름이 없는 카테고리 기능을 사용해서 해결할 수 있습니다. 이 이름이 없는 카테고리 기능을 <span style="color: rgb(255, 118, 53); font-weight: bold;">class continuation</span>이라고 부른다고 합니다.</span><br><pre class="line-numbers"><code class="language-objc">
// PackagesViewController.m
#import "PackagesViewController.h"
@interface PackagesViewController()
- (void)findGroup:(NSMutableArray *)array;
@end
@implementation PackagesViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self findGroup:packages];
}
- (void)findGroup:(NSMutableArray *)array {
}
@end
</code></pre><br>이렇게 작성해도 동일하게 동작하며 2가지 방법 모두 카테고리에 정의한 메서드를 구현하지 않으면 컴파일러 경고가 뜨기 때문에 실수도 방지할 수 있습니다.(컴파일 오류는 나지 않습니다.)<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1119666037.gif" alt="사용자 삽입 이미지" height="277" width="431" /></div><br>2가지 방법 중 작성이 좀 더 편리한 class continuation쪽이 낫지 않나 생각하고 있습니다. 저도 공부중이라 위에서 언급한 부분외의 차이점외에는 아직 잘 모르겠습니다. <a href="http://theocacao.com/document.page/516" target="_blank">A Quick Objective-C 2.0 Tutorial: Part II</a>에서는 카테고리를 사용했을때의 컴파일러 경고에 대해서 언급하고 그 대안으로 class continuation에 대해서 언급하고 있지만 이리 저리 테스트해봤는데(아직 초심자라 디테일한 테스트라하기는 어렵지만) 딱히 언급된 문제는 찾을 수 없었습니다.<br><p><strong><a href="https://blog.outsider.ne.kr/640?commentInput=true#entry640WriteComment">댓글 쓰기</a></strong></p>