5장 143쪽에서 awakeFromNib메서드 구현 부분에서 NSTableView에 나열되어 있는 NSSpeechSynthesizer의 목소리 목록에서 기본 목소리 값을 선택하게끔 하는 부분이 있다.

// 테이블 뷰가 화면에 나타날 때 기본 목소리가 선택되어야 한다.
NSString *defaultVoice = [NSSpeechSynthesizer defaultVoice];
NSArray *voices = [NSSpeechSynthesizer availableVoices];
int defaultRow = [voices indexOfObject:defaultVoice];
[tableView selectedRow:defaultRow byExtendingSelection:NO];
[tableView scrollRowToVisible:defaultRow];


이 부분을 책에 있는 그대로 입력하게 되면 다음과 같은 경고(warning)이 출력된다.

Xcode의 개발자 문서에서 해당 메서드를 검색하니 deprecated 되었단다. NSTableView의 selectedRow:byExtendingSelection 대신 권장되는 selectedRowIndexs:byExtendingSelection 이다.
deprecated된 기존의 메서드의 NSInteger 타입이 아닌, NSIndexSet 타입의 파라미터를 받게된다. 따라서 위의 경고가 출력된 부분을 다음과 같이 수정하면 이상없이 빌드 / 실행(디버그) 할 수 있다.

[tableView selectRowIndexes:
[NSIndexSet indexSetWithIndex:defaultRow] byExtendingSelection:NO];


+ Recent posts