美文网首页
关于NSMutableURLRequest的偶现bug解决以及疑

关于NSMutableURLRequest的偶现bug解决以及疑

作者: 不辣先生 | 来源:发表于2019-02-18 11:03 被阅读3次

    崩溃日志:[NSURLRequest setHTTPBody:]: unrecognized selector sent to instance xxxxx
    崩溃问题是出现在我打包.a里面,里面包含了一个网络请求
    执行代码如下:

    /*!
    @method requestWithURL:cachePolicy:timeoutInterval:
    @abstract Allocates and initializes a NSURLRequest with the given
    URL and cache policy.
    @param URL The URL for the request.
    @param cachePolicy The cache policy for the request.
    @param timeoutInterval The timeout interval for the request. See the
    commentary for the <tt>timeoutInterval</tt> for more information on
    timeout intervals.
    @result A newly-created and autoreleased NSURLRequest instance.
    */

    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
    

    一开始没注意这个NSMutableURLRequest在日志中变成了NSURLRequest,至于到解决问题也没有弄清楚为啥我明明初始化的是NSMutableURLRequest会变成了NSURLRequest;

    解决方案如下:

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    
        [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
        [request setTimeoutInterval:10];
        [request setURL:[NSURL URLWithString:urlStr]];
    

    解决问题的灵感来源于上面那个初始化方法的系统注释autoreleased NSURLRequest instance 这个方法是autoreleased,我怀疑在使用的时候被系统释放了,所以造成了上面的崩溃;
    bug解决了剩下俩个疑惑,希望有路过的大神解答一下
    1.为什么我这里NSMutableURLRequest初始化会变成它的父类NSURLRequest,环境是这个方法在静态库.a中执行?
    2.方法中带有autoreleased字样的应该怎么去注意什么?是否会在使用过程中被提前释放的可能?

    相关文章

      网友评论

          本文标题:关于NSMutableURLRequest的偶现bug解决以及疑

          本文链接:https://www.haomeiwen.com/subject/skaoeqtx.html