簡體   English   中英

Objective C&Swift互操作性導致錯誤“擴展可能不包含存儲的屬性”

[英]Objective C & Swift Interoperability causes error “Extensions may not contain stored properties”

我正在研究我在Objective C上完成的一個應用程序。我需要為它添加一個新模塊,我決定將Swift用於該特定模塊。

我在Objective C中有一個名為HomePage的類,我想在其中添加一些新的IBActionIBOutlet 為此我添加了一個新的swift文件並擴展了現有的類,如:

// MARK: IBOutlets and IBActions
extension HomePage
{
    @IBOutlet var image : UIImageView!
    ...

    /*!
    * Loads the application support webpage
    */
    @IBAction func loadSupportURL(sender : UIButton)
    {
    }
    ...
}

如果我只添加IBActions,一切都很完美。 但是當我添加一個IBOutlet時,編譯器會拋出一個錯誤:

擴展名可能不包含存儲的屬性

為了解決這個問題,我有兩種方法,

  1. 在我的Objective C類中聲明出口
  2. 將整個Objective C類轉換為Swift並在那里聲明屬性

有沒有其他方法可以解決這個問題?

正如錯誤消息明確指出的那樣,您不能在擴展中存儲屬性。 但問題是,你不能在Objective-C類別中使用它們,所以這里的語言不是問題。

在這兩種語言中,您需要使用關聯的引用來實現存儲的屬性。 有關在Swift中使用關聯引用的示例,請參閱此主題 由於它是一個C API,它在Objective-C中的用法幾乎相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM