2012-05-23 28 views
0

我分叉这个伟大的钛模块访问ALAsset。 https://github.com/amigoni/titanium-mobile-alasset-module钛的ALAsset模块在模拟器上工作,但在设备上崩溃任何提示?

我正在尝试访问图片数据和信息。它似乎在模拟器中正常工作,但不在设备上。

这里就是我怀疑的代码是

-(void)assetThumbnails:(id)args 
{ 
ENSURE_UI_THREAD_1_ARG(args); 
ENSURE_SINGLE_ARG(args,NSDictionary); 

id onthumb  = [args objectForKey:@"thumbnailCallback"]; 
NSString *group = [args objectForKey:@"group"]; 
ENSURE_STRING_OR_NIL(group); 
int page  = [TiUtils intValue:[args objectForKey:@"page"] def:1] - 1; 
int perPage  = [TiUtils intValue:[args objectForKey:@"perPage"] def:25]; 

int fromIndex = page * perPage; 
int toIndex  = fromIndex + perPage; 

NSUInteger groupTypes = ALAssetsGroupSavedPhotos; 
if(group == nil){ 
    group = @"savedPhotos"; 
} 
if([group isEqualToString:@"savedPhotos"]){ 
    groupTypes = ALAssetsGroupSavedPhotos; 
} else if([group isEqualToString:@"photoStream"]){ 
    groupTypes = ALAssetsGroupPhotoStream; 
} else if([group isEqualToString:@"faces"]){ 
    groupTypes = ALAssetsGroupFaces; 
} else if([group isEqualToString:@"all"]){ 
    groupTypes = ALAssetsGroupAll; 
} 
NSMutableArray *assets = [[NSMutableArray alloc] init]; 
RELEASE_TO_NIL(thumbCallback); 
thumbCallback = [onthumb retain]; 
void (^assetGroupEnumerator) (ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){ 
    if(group != nil) { 
     [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { 
      if(result != nil) 
      { 
       if((index >= fromIndex) && (index <= toIndex)){ 
        NSURL *url = [[result defaultRepresentation] url]; 
        NSString *sUrl = [url absoluteString]; 
        NSDictionary *metadata = result.defaultRepresentation.metadata; 
         UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]]; 
         NSDictionary *event = [NSDictionary 
               dictionaryWithObjectsAndKeys: 
               [[[TiBlob alloc] initWithImage:thumbnail] autorelease], 
               @"thumbnail", 
               NUMINT(index), 
               @"index", 
               sUrl, 
               @"url", 
               metadata, 
               @"metadata", 
               nil]; 
         [assets addObject:event]; 
       } 
      } else { 
       if (thumbCallback!=nil) 
       { 
        NSDictionary *event = [NSDictionary dictionaryWithObjectsAndKeys:assets,@"assets", nil]; 
        [self _fireEventToListener:@"onThumbnail" withObject:event listener:thumbCallback thisObject:nil]; 
        [assets release]; 
       } 
      } 
     }]; 
    } 
}; 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library enumerateGroupsWithTypes:groupTypes 
         usingBlock:assetGroupEnumerator 
        failureBlock:^(NSError *error) {}]; 
[library release]; 
} 

有趣的是,该代码似乎第26项之后崩溃。正如你从上面的代码中看到的那样,将成为第二页的第一页。

我真的不太了解Objective C并且正在寻找一些帮助。

谢谢

回答

0

也许[发布资产]引发异常。我的情况是这样的。

在分配资产时,[[[[[NSMutableArray alloc] init] autorelease]并删除该行; 异常不会升高。

相关问题