小编Anu*_*har的帖子

AFNetworking + NsOperationQueue - 下载数千张图片

我正在处理一项任务(仅限iOS5 +),涉及从服务器下载数千张图像.图像属于某些类别,每个类别可以有数百个图像.我需要做的是: -

1)如果应用程序处于活动状态,请确保应用程序在后台下载任何丢失的图像(即使用户正在浏览应用程序中与照片无关的其他某些区域).

2)当用户点击照片类别时,必须将该类别中的图像作为高优先级下载,因为那些是需要立即可见的图像.

所有上述操作仅在图像尚未脱机可用时才会发生.下载后,图像将从本地存储中使用.

要解决这个问题,我使用的逻辑是: -

1)在AppDelegate.m中applicationDidBecomeActive,我开始下载任何丢失的图像.为此,我进行了核心数据查询,找出缺少的图像,并开始在具有BACKGROUND优先级的线程中下载它们.像这样: -

 dispatch_queue_t imageDownloadQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(imageDownloadQueue, ^{
    [DataDownloader downloadMissingImages];
});
dispatch_release(imageDownloadQueue);
Run Code Online (Sandbox Code Playgroud)

downloadMissingImages代码如下所示: -

NSOperationQueue *downloadQueue = [[NSOperationQueue alloc] init];
        downloadQueue.maxConcurrentOperationCount = 20;

        for(MyImage *img in matches)
        {
            NSURLRequest *request = [NSURLRequest requestWithURL:img.photoUrl];
            AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request success:^(UIImage *image) {

                [MyImage imageFromAPI:image inManagedObjectContext:document.managedObjectContext];

                NSLog(@"Successfully downloaded image for %@", img.title);      
            }];

            [downloadQueue addOperation:operation];
        }
Run Code Online (Sandbox Code Playgroud)

这可行,但它会阻止主UI和应用程序崩溃一段时间后.这是我尝试下载大约700张图片的时候.随着更多的图像,它肯定会崩溃.

2)当用户点击某个类别时,我需要先下载这些图像,因为它们必须立即显示给用户.我不知道如何中断missImages调用并告诉它开始在其他人之前下载某些图像.

所以,基本上,我需要在后台下载所有丢失的图像,但如果用户正在浏览照片类别,那些图像必须在下载队列中具有高优先级.

我不知道如何有效地工作.有什么想法吗?

崩溃日志看起来像这样

PAPP(36373,0xb065f000) malloc: *** mmap(size=16777216) failed (error code=12)
*** …
Run Code Online (Sandbox Code Playgroud)

nsoperationqueue ios5 afnetworking

8
推荐指数
1
解决办法
3905
查看次数

twitter bootstrap形式内联拉伸

我有一个带有Bootstrap 2.0.1的内联表单 - 这个表单有3个标签和3个下拉菜单......

我想要做的是延伸下拉菜单,第一个是向左,第三个是在包含div的右边....我可以通过一些左右浮动但我是想知道是否已经内置了这样的东西?

思考?

代码看起来像这样

<form id="frmOptions" method="post" class="form-inline">
   <label>Option 1:</label>
   <select>---</select>

   <label>Option 2:</label>
   <select>---</select> 

   <label>Option 3:</label>
   <select>---</select>
</form>
Run Code Online (Sandbox Code Playgroud)

twitter-bootstrap

7
推荐指数
1
解决办法
2万
查看次数

Twitter BootStrap TopBar和DropDown菜单

我正在尝试构建一个左侧和右侧有一些链接的顶部栏,将有一个登录链接,它将在DropDown中打开登录表单.我还希望登录表单在单击时(或下拉列表打开时)应该像选定的选项卡一样

我的代码如下: -

<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
    <div class="container">
        <ul class="nav">
            <li><a href="#">Home</a></li>
            <li><a href="#">Section1</a></li>
            <li><a href="#">Section2</a></li>
        </ul>

        <ul class="nav nav-tabs pull-right signin-menu">
            <li class="dropdown" data-dropdown="dropdown"><a href="#" data-toggle="dropdown" class="login-link dropdown-toggle">Login</a>
                <ul class="dropdown-menu" id="signin-dropdown">
                    <li>
                        <form>....</form>
                    </li>
                </ul>
            </li>   
        </ul>           
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有两个列表,其中一个在右边,因为我希望它的行为类似于制表符.我的问题是,当下拉列表打开时,我无法删除指向登录链接的小箭头.我希望它看起来像一个选定的标签,下面有一个下拉列表,没有指向箭头.

此外,选中时,标签会松开它的圆角.我确定这是一个CSS问题,但不知道在哪里寻找它..

有任何想法吗?

PS我在BootStrap v2.0.1上

twitter-bootstrap

5
推荐指数
1
解决办法
6922
查看次数

JSONKIT解析错误

我正在使用单例类从远程服务器(通过NSURLConnection)获取JSON - 除非我尝试使用JSONKit解析JSON,否则一切看起来都很好.

这是一些代码

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
 [apiData appendData:data];  
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"Connection failed! Error - %@ %@",
      [error localizedDescription],
      [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse   *)response
{
NSHTTPURLResponse *realResponse = (NSHTTPURLResponse *)response;
if (realResponse.statusCode == 200)
{
    apiData = [[NSMutableData alloc] init];
} else {
    NSLog(@"Bad response = %i",realResponse.statusCode);
}
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *jsonData = [[NSString alloc] initWithData:apiData encoding:NSUTF8StringEncoding];
NSDictionary *deserializedData = [jsonData objectFromJSONString];
[self.delegate dataLoaded:deserializedData]; 
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是在这一行

 NSDictionary *deserializedData = …
Run Code Online (Sandbox Code Playgroud)

json nsurlconnection ios jsonkit

0
推荐指数
1
解决办法
1907
查看次数