2016-11-11 10 views
0

私は素早いフレームワークを作成しています。その1つのクラスでは、次のようになります。私はObjective Cのプロジェクトにこのフレームワークを追加し、「sharedInstance」にアクセスしようとすると、プロパティ 'sharedInstance'がClassAタイプのオブジェクトに見つかりません

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 
    } 
} 

は今、私はこのエラーを取得します。

プロパティ 'sharedInstance'がClassAタイプのオブジェクトに見つかりません。 Fix 'sharedInstance'を 'sharedInstance'に置き換えます

しかし、修正を使用しようとしても、この問題は解決しません。

注:このフレームワークを迅速なプロジェクトに統合すると、この問題は発生しません。

私はSTUCK AM .. :(

+0

変数に「public」とマークする必要がありますか? –

+0

でも私はそれを試みました。 didntは問題を解決しました。 と私は迅速にプロジェクトと統合された場合、これはうまく動作すると言う。 : –

+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" 
    } 
    

    }

  • オブジェクティブ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() 

ここでは、ここを参照してください、シングルトン実装するための推奨される方法である、保存されたtypeプロパティを使用: 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

関連する問題