2017-12-31 18 views
1

내 프로그램이 라디오 방송국을 자동화합니다. iTunes와는 많은 커뮤니케이션이 이루어집니다. 스크립팅 브리지로 프로그래밍했습니다. 스크립팅 브리지는 메모리 누수로 고통받습니다. 스크립팅 브리지를 호출 할 때마다 소량의 메모리가 누출됩니다. 연중 무휴로 실행되는 프로그램에 많은 호출을 추가하고 24 시간 이내에 실행될 소프트웨어를 얻은 다음 종료합니다.ITLibrary는 나에게 아무것도주지 않습니다. (null)

솔루션에 대한 첫 번째 시도는 스크립팅 브리지에 대한 호출을 최소화하는 것이 었습니다. 그 일을 연구하면서, 나는 ItunesLibrary를 발견했다. 그것은 나를 위해 일하지 않습니다.

NSError *error = nil; 
ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error]; 
if (library) 
{ 
    NSArray *playlists = [[NSArray alloc]init]; 
    playlists = library.allPlaylists; 
    NSArray *tracks = [[NSArray alloc]init]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mediaKind == %d", ITLibMediaItemMediaKindSong]; 
    tracks = [library.allMediaItems filteredArrayUsingPredicate:predicate]; 

    NSLog(@"Playlists - %@",playlists); 
    NSLog(@"Tracks - %@",tracks); 
} 

이 코드는 Apple의 문서에서 거의 벗어났습니다. 그것은 작동해야합니다 - 제 생각에.

전 술어를 추가하기 전에 iTunes 보관함에있는 각 Podcast에 대한 정보를 얻었습니다. nslog 출력에서 ​​각 재생 목록은 ""과 비슷한 항목을 생성합니다. 각각의 노래는 (null) 이상을 보여줍니다.

모든 정보는 iTunes에 있습니다. 스크립팅 브리지로 읽을 수 있습니다. AVAsset으로 읽을 수 있습니다.

나는 노래 이름, 앨범 이름 및 아티스트 이름 만 얻습니다. iTune의 나머지 ID3 태그에 액세스해야합니다.

무엇을 깰 수 있습니까?

답변

0

ItunesLibrary를 작동시키기위한 비결은 인 타이틀먼트 파일에있는 것 같습니다. "com.apple.security.assets.music.read-only"키를 추가하고 YES로 설정해야합니다. 나는 github.com에있는 프로젝트를 파헤쳐 이것을 얻었다.

관련 문제