多次调用时,对象会释放

时间:2016-02-02 19:44:22

标签: ios swift dealloc

我将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会更新一次。

0 个答案:

没有答案