【发布时间】:2011-11-29 08:05:58
【问题描述】:
我正在尝试创建一个方法,该方法将为给定的资产 url 返回一个 ALAsset。 (我需要稍后上传资产,并希望在结果块之外使用结果。)
+ (ALAsset*) assetForPhoto:(Photo*)photo
{
ALAssetsLibrary* library = [[[ALAssetsLibrary alloc] init] autorelease];
__block ALAsset* assetToReturn = nil;
NSURL* url = [NSURL URLWithString:photo.assetUrl];
NSLog(@"assetForPhoto: %@[", url);
[library assetForURL:url resultBlock:^(ALAsset *asset)
{
NSLog(@"asset: %@", asset);
assetToReturn = asset;
NSLog(@"asset: %@ %d", assetToReturn, [assetToReturn retainCount]);
} failureBlock:^(NSError *error)
{
assetToReturn = nil;
}];
NSLog(@"assetForPhoto: %@]", url);
NSLog(@"assetToReturn: %@", assetToReturn); // Invalid access exception coming here.
return assetToReturn;
}
问题是 assetToReturn 给出了 EXC_BAD_ACCESS。
如果我尝试从块内部分配指针,会有问题吗?我看到了一些块的例子,但它们总是使用简单的类型,比如整数等。
【问题讨论】:
-
在 iOS(iPhone、iPad)上询问有关 Cocoa Touch 的问题时,请使用“cocoa-touch”标签。 “cocoa”标签是针对 Mac OS X 上的 Cocoa 的问题。
-
顺便说一句:
retainCount在这种情况下毫无用处。
标签: cocoa-touch objective-c-blocks alasset