我将viewcontroller推送到导航堆栈。当我按下后退按钮并多次重新输入同一页面时,初始化程序中的对象将被取消分配。这是我的代码:
init(url: NSURL) {
super.init(nibName: "CustomUIWebView", bundle: nil)
let request = NSMutableURLRequest(URL: url)
request.setValue(kHeaderObject, forHTTPHeaderField: "headerTestField")
urlRequest = request
}
public convenience init(testURL: NSURL) {
self.init(url: testURL)
}
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
崩溃发生在request.setValue("", forHTTPHeaderField: "headerTestField")
这是我收到的错误消息:
- [CFString retain]:发送到解除分配的实例的消息
关于我的代码出错的任何想法? 我在上一个视图中调用了表视图中didSelectCell委托方法的方法。
TestViewController *tvc = [[TestViewController alloc] initWithTestURL:testURL];
kHeaderObject
被声明为extern NSString *kHeaderObject;
如果我用直接硬编码的字符串替换它我不会看到这个崩溃。我想知道为什么访问静态内存应该很重要。
Constants.h
extern NSString *k_strOfferingIdValueHeader;
Constants.m
#import "Constants.h"
NSString *kHeaderObject = @"test123";
Constants.h
被添加到桥接头文件中。
kHeaderObject
会更新一次。