내 프로그램이 라디오 방송국을 자동화합니다. 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 태그에 액세스해야합니다.
무엇을 깰 수 있습니까?