基于文档的Obj-C(Mac)应用程序发出有关nsTextViewObj的错误

时间:2012-11-18 00:03:30

标签: objective-c xcode macos osx-lion osx-snow-leopard

我正在使用Julius Guzy's示例代码来创建可以保存文本文件的基于文档的应用程序。我运行他的代码,它运行良好,应用程序运行/保存文件 (所有在最新版本的Xcode。尽管Guzy的示例代码使用10.6 SDK编译) 。我正在尝试从中学习并重写代码。我有一切都是为了编译应用程序,但对于 MyDocument.m 中最奇怪的事情。我无法运行它。

@synthesize nsTextViewObj;

Xcode给了我这个错误,我真的不明白。

  

对于属性'nsTextViewObj'的现有ivar'nsTextViewObj'   assign属性必须是__unsafe_unretained

nsTextViewObj; 假设链接到IB中的“文件所有者”。我首先做到了这一点。它打败了我为什么我得到那个错误。 SDK冲突可能吗? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

ARC需要对代码进行一些更改。 Xcode提供了一个自动将非ARC代码转换为ARC的工具:编辑/重构/转换为Objective-C ARC ......

Xcode工具是一个良好的开端,我仍然建议您阅读Transitioning to ARC Release Notes

我不知道Julius Guzy的代码,但可能你应该改为:

@interface ifc_name : NSWindowController {
    NSTextView *__unsafe_unretained nsTextViewObject;
}
@property (unsafe_unretained) NSTextView *nsTextViewObject;

顾名思义,unsafe_unretained不安全:当对象被释放时,您的引用无效。如果仅部署到iOS 5或更高版本以及OS-X 10.7或更高版本,则可以使用weak代替。使用weak时,当对象被释放时,您的引用将变为零。