关于NSMutableURLRequest的偶现bug解决以及疑
崩溃日志:[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字样的应该怎么去注意什么?是否会在使用过程中被提前释放的可能?