标签: asihttprequest

ASIHTTPRequest/ASIFormDataRequest - 在ARC下的块内引用请求对象

此问题非常相似,我正在尝试将使用ASIHTTPRequest&的项目转换ASIFormDataRequest为ARC.

在我的视图控制器类中,我经常request在完成块中引用和使用对象的属性(查看响应代码,响应数据等):

__block  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:SOME_URL]];    
[request setCompletionBlock:^{   

    if([request responseStatusCode] == 200) ....etc
Run Code Online (Sandbox Code Playgroud)

转换为ARC时,我收到警告:

在此块中强烈捕获"请求"可能会导致保留周期

这样做的正确方法是什么?

另一个SO用户在前一个帖子中指出,简单添加__weak可能会导致请求在块完成之前被释放,我认为这是真的.

如何在ARC下的完成/故障块中正确引用这些属性?

iphone objective-c asihttprequest ios automatic-ref-counting

21
推荐指数
1
解决办法
4914
查看次数

AFNetworking:如何知道响应是否正在使用缓存?304或200

我找不到任何问题的答案,可能是我错过了什么......

当我要求提供网址时,我需要知道响应是来自缓存还是来自网络.

状态代码是304还是200?(但AFNetworking总是回应200)

随着ASIHTTPRequest我用来检查" didUseCachedResponse"从ASIHTTPRequest,这是完美的.

iphone asihttprequest http-status-code-304 ios afnetworking

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

iOS开发:为什么我总是在第一次尝试时发生"连接失败",但下一次成功?

我在我的iOS应用程序中使用ASIHTTPRequest lib来向我的Rails 3 Web应用程序发出RESTful请求.我第一次尝试向我的网络应用程序发出POST请求时看到一个奇怪且有些一致的错误,但是POST请求在第二次尝试时工作正常.确切的错误是......

Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0xb513740 {NSUnderlyingError=0xb5135a0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1005.)", NSLocalizedDescription=A connection failure occurred}
Run Code Online (Sandbox Code Playgroud)

这是我的ASIHTTPRequest代码,用于发出POST请求...

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myrails3app.heroku.com/tournaments/%d/register.json", tid]];
    __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setRequestMethod:@"POST"];
    [request addPostValue:username forKey:@"username"];

    [request setCompletionBlock:^
    {
        NSData *responseData = [request responseData];     
        NSLog(@"Success!");
    }];

    // Set the code to be called when the request fails
    [request setFailedBlock:^
     {
         NSError *error = [request error];
         NSLog(@"Error: %@", [error localizedDescription]);
     }];

    // Start …
Run Code Online (Sandbox Code Playgroud)

iphone ruby-on-rails asihttprequest ipad ios

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

为什么我更喜欢ASIHTTPRequest而不是NSURLConnection从网上下载文件?

我见过几次使用ASIHTTPRequest下载文件的人.现在我想知道为什么?NSURLConnection的核心优势是什么?

iphone nsurlconnection asihttprequest ipad ios

16
推荐指数
1
解决办法
3843
查看次数

ASIHTTP的下载队列的最佳替代品,后继者或替代品

我最近在http://allseeing-i.com上看到ASIHTTP正在停产的消息.我非常尊重图书馆的制作者.但是,我现在正在寻找一种替代品,它也支持iOS上的排队下载(多线程),它还支持具有适当信息的进度条.

是否有任何(希望是轻量级)库,这是一个活跃的开发生命周期?ARC支持也将受到高度赞赏.

非常感谢你的想法.

iphone queue asihttprequest ios progress-bar

16
推荐指数
2
解决办法
4760
查看次数

Objective-C:类别中的实例变量

我只是想问是否可以通过类别添加实例变量.我的特殊问题是,我需要将一个NSIndexPath属性添加到ASIHTTPRequest对象,但我不想将ASIHTTPRequest子类化为原则问题.

我有什么选择吗?

谢谢你的回答,克里斯蒂安

object objective-c identify asihttprequest nsindexpath

15
推荐指数
1
解决办法
9009
查看次数

ASIHTTPRequest设置超时

如何使用ASIHTTPRequest设置会话超时?

谢谢

iphone asihttprequest

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

多线程应用程序中NSManagedObjectContext的通用方法

我在这里阅读了很多关于NSManagedObjectContext和多线程应用程序的帖子.我还讨论了CoreDataBooks示例,以了解单独的线程如何需要自己的NSManagedObjectContext,以及保存操作如何与主NSManagedObjectContext合并.我发现这个例子很好,但也是应用程序特定的.我试图概括这一点,并想知道我的方法是否合理.

我的方法是使用通用函数来获取当前线程的NSManagedObjectContext.该函数返回主线程的NSManagedObjectContext,但如果从另一个线程中调用,则会创建一个新线程(或从缓存中获取它).具体如下:

+(NSManagedObjectContext *)managedObjectContext {
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *moc = delegate.managedObjectContext;

    NSThread *thread = [NSThread currentThread];

    if ([thread isMainThread]) {
        return moc;
    }

    // a key to cache the context for the given thread
    NSString *threadKey = [NSString stringWithFormat:@"%p", thread];

    // delegate.managedObjectContexts is a mutable dictionary in the app delegate
    NSMutableDictionary *managedObjectContexts = delegate.managedObjectContexts;

    if ( [managedObjectContexts objectForKey:threadKey] == nil ) {
        // create a context for this thread
        NSManagedObjectContext *threadContext = [[[NSManagedObjectContext alloc] init] …
Run Code Online (Sandbox Code Playgroud)

iphone multithreading core-data objective-c asihttprequest

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

检测到不正确的NSStringEncoding值0x0000(使用ASIHTTPRequest)

我在我的应用程序中使用ASIHTTPRequst并且遇到了一些问题,但仅限于某些设备.在某些情况下,我收到以下错误:

"检测到不正确的NSStringEncoding值0x0000.假设NSASCIIStringEncoding.将在不久的将来停止这种兼容性映射行为"

我得到了有限的测试选项,因为它适用于我的所有内部测试设备,但问题仍然发生在我的一个或多个客户端测试手机上.这也可能是手机连接到蜂窝网络的情况,因为它似乎正在使用wifi.

有谁知道可能导致问题的原因是什么?我看到有类似的问题类型,但我的代码看起来是正确的,从其他问题答案和ASIHTTPRequest网站.

编辑 发生错误时,不会收到服务器的响应,因此用户卡在注册/登录状态.

urlEncodeValue:

- (NSString *)urlEncodeValue:(NSString *)str
{
    NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
    return [result autorelease];
}
Run Code Online (Sandbox Code Playgroud)

ASIHTTPRequest代码段:

    NSString *encodedUrlAdress = [NSString stringWithFormat:@"%@user/register/%@/%@/%@/%d/%@/%@/%@/%@", 
                                   kUserServerAddress, 
                                   [self urlEncodeValue:_firstName], 
                                   [self urlEncodeValue:_lastName], 
                                   [self urlEncodeValue:_phoneNumber], 
                                   _sex, 
                                   [self urlEncodeValue:_birthDate], 
                                   [self urlEncodeValue:_address], 
                                   [self urlEncodeValue:_postalNumber]];    
    NSLog(@"encodedUrlAdress: %@", encodedUrlAdress);

    NSURL *url = [NSURL URLWithString:encodedUrlAdress];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request startSynchronous];
    NSError *error = [request error];

    if (!error) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)

iphone asihttprequest

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

ARC和ASIHTTPRequest

我有一个奇怪的问题.

ASIHTTPRequest在启用了ARC的iOS 5项目中使用.由于ASIHTTPRequest不支持ARC我已在所有单个ASIHTTPRequest文件上禁用ARC .

在此输入图像描述

但是,当我尝试编译我的项目时,xcode仍然认为这些文件是启用ARC的,它会抱怨.

在此输入图像描述

我做错了什么或是xcode中的错误?不要告诉我ASIHTTPRequest使用重构工具转换为ARC兼容代码.我试图这样做,xcode抱怨项目上启用了ARC(?!?!).

iphone asihttprequest ios xcode4.2 automatic-ref-counting

12
推荐指数
2
解决办法
6238
查看次数