ios - AVAssetResourceLoader delegate not set -
i've been trying implement avassetresourceloaderdelegate far have been unable set delegate, causing delegate code never called.
consider this:
avurlasset *asset = [avurlasset urlassetwithurl:url options:nil]; [asset.resourceloader setdelegate:[[myassetresourceloaderdelegatecode alloc] init] queue:queue]; nslog(@"delegate: %@", asset.resourceloader.delegate);
this code prints delegate: (null)
. how set delegate when delegate refuses set? missing?
this occurs on simulator , on iphone 5s running ios 8.
the delegate associate object must adopt avassetresourceloaderdelegate protocol. code should this:
@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
or
if have separate delegate myassetresourceloaderdelegatecode somewhere have maintain strong reference object myassetresourceloaderdelegatecode created , pass delegate. when [asset.resourceloader setdelegate:... resourceloader have weak reference object made. so, code can be:
@property (nonatomic, strong) myassetresourceloaderdelegatecode *assetobject; self.assetobject = [myassetresourceloaderdelegatecode new]; [asset.resourceloader setdelegate:self.assetobject ...];
ios objective-c iphone delegates avfoundation
No comments:
Post a Comment