2016-11-11 108 views
0

我正在創建一個快速框架。在這一個類如下所示。在類型爲ClassA的對象上未找到屬性'sharedInstance'

import Foundation 
    @objc public class classA: NSObject { 

    public override init(){ 
     super.init(); 
    } 

/** 
Singleton intance is returned. 
*/ 
    public class var sharedInstance: classA { 
     struct Static { 
      static let instance = popeye(); 
     } 
     return Static.instance 
    } 
} 

現在,當我將此框架添加到Objective C項目並嘗試訪問「sharedInstance」時出現此錯誤。

在ClassA類型的對象上找不到屬性'sharedInstance'。 修復它用'sharedInstance'替換'sharedInstance'

但即使我嘗試使用修復它,這個問題沒有解決。

注意:當我將此框架與swift項目集成時,不會發生此問題!

我堅持.. :(

+0

也許你應該把變量標記爲'public'? –

+0

即使我嘗試過。沒有解決這個問題。 正如我所說,這與當與swift項目集成時工作得很好。 :( –

+0

http://stackoverflow.com/questions/24489075/call-a-swift-singleton-from-objective-c – Sahil

回答

0

最後我能解決這個問題隨着一個小的變化! :)

  • 斯威夫特框架代碼

    @objc類SingletonTest:NSObject的{

    // swiftSharedInstance is not accessible from ObjC 
    class var swiftSharedInstance: SingletonTest { 
    struct Singleton { 
        static let instance = SingletonTest() 
        } 
        return Singleton.instance 
    } 
    
    // the sharedInstance class method can be reached from ObjC 
    class func sharedInstance() -> SingletonTest { 
        return SingletonTest.swiftSharedInstance 
    } 
    
    // Some testing 
    func testTheSingleton() -> String { 
        return "Hello World" 
    } 
    

    }

  • Objective C的父項目代碼

    SingletonTest * aTest = [SingletonTest sharedInstance]; NSLog(@「Singleton says:%@」,[aTest testTheSingleton]);

0

我試圖重現您的問題。首先在Xcode的語法高亮標記在你提到的Objective-C同樣的錯誤,但代碼實際上建成並運行良好。

但是,有一個更簡潔的方法可以做到這一點。在你的代碼中,你使用的是計算類型屬性,每次訪問時都會對它進行評估!你可以通過引入struct Static來解決這個問題,可以在classA本身完成,如下所示:

/** 
Singleton intance is returned. 
*/ 
public static var sharedInstance: classA = popeye() 

在這裏,我們使用的存儲類型的屬性,這是貫徹落實單身一個推薦的方式,在這裏看到: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html 這裏是不同類型房地產的一些文檔: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html

相關問題