我正在处理我在Objective C上完成的一个应用程序。我需要为它添加一个新模块,我决定将Swift用于该特定模块。
我在Objective C中有一个名为HomePage
的类,我想在其中添加一些新的IBAction
和IBOutlet
。为此我添加了一个新的swift文件并扩展了现有的类,如:
// MARK: IBOutlets and IBActions
extension HomePage
{
@IBOutlet var image : UIImageView!
...
/*!
* Loads the application support webpage
*/
@IBAction func loadSupportURL(sender : UIButton)
{
}
...
}
如果我只添加IBActions,一切都很完美。但是当我添加一个IBOutlet时,编译器会抛出一个错误:
扩展程序可能不包含存储的属性
为了解决这个问题,我有两种方法,
还有其他方法可以解决这个问题吗?
答案 0 :(得分:7)
正如错误消息明确指出的那样,您不能在扩展中存储属性。但问题是,你不能在Objective-C类别中使用它们,所以这里的语言不是问题。
在这两种语言中,您需要使用关联的引用来实现存储的属性。有关在Swift中使用关联引用的示例,请参阅this thread。由于它是一个C API,它在Objective-C中的用法几乎相同。