당신이 AVAssetResourceLoaderDelegate 프로토콜을 채택해야하는이 객체에 연결 대리자를 실행하는 아이폰 5S에 발생합니다. 그래서 코드는 다음과 같이해야합니다 :
@interface YourClass() <AVAssetResourceLoaderDelegate>
@end
@implementation YourClass
- (void)someMethod
{
NSURL *url = [NSURL URLWithString:@"...."];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
[asset.resourceLoader setDelegate:self queue:queue];
}
#pragma mark - AVAssetResourceLoaderDelegate methods
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
{
}
@end
또는
당신이 어딘가에 당신이 만든 객체 MyAssetResourceLoaderDelegateCode에 강한 참조를 유지하고 대리자로 전달해야 할 별도의 위임 MyAssetResourceLoaderDelegateCode이있는 경우
. [asset.resourceLoader setDelegate : 할 때 ... resourceLoader 그냥 만든 개체에 약한 참조가 있습니다. 코드는 다음과 같을 수 있습니다 :
@property (nonatomic, strong) MyAssetResourceLoaderDelegateCode *assetObject;
self.assetObject = [MyAssetResourceLoaderDelegateCode new];
[asset.resourceLoader setDelegate:self.assetObject ...];
있습니다. 내 예에서'MyAssetResourceLoaderDelegateCode'는'AVAssetResourceLoaderDelegate' 프로토콜과 그 메소드를 모두 공개적으로 구현합니다.이 메소드는 현재 로그 명령문과 중단 점을 호출하여 호출되는지 여부를 확인합니다. – MxSagan
님이 답변을 – kabarga
업데이트했습니다. 대리인은 강력한 참조가 아니므로 dealloc'd를 얻고있었습니다. 이제 대리자가 올바르게 설정되지만 대리자 개체는 여전히 대리자의 메서드에 대한 메시지를받지 못합니다. 어떤 아이디어? – MxSagan