2017-10-03 5 views
-2

新しいSwiftプロジェクトでObjective C言語で書かれた静的ライブラリを実装しました。すべてが問題なく、クラスメソッドとインスタンスメソッドを迅速なコードブロックで呼び出すことができます。しかし、リターンプロトコルであるメソッドを呼び出そうとすると、エラーが発生します。私は迅速にコードのメソッドの下で正常に呼び出されていません。スウィフト言語のObjective Cメソッド(リターンプロトコル)の呼び出し方法

私はこのメソッドをSwiftでどのように呼び出すことができますか。 Objective Cのに書かれている

静的ライブラリは All methods is here

私はgetScreenManagerある名前メソッドを呼び出すことはできません。また、XcodeはSwiftでこのメソッドのヒントを表示していません。 enter image description here

IScreenManager以下のとおりです。命名規則の多くは迅速3に変更し、原因も影響を与え迅速から呼び出すこのObjective-Cの機能にあるよう

@protocol IScreenManager <NSObject> 

@property (weak, nonatomic) id<ScreenManagerDelegate> delegate; 
@property (strong, nonatomic) NSDictionary *transitionDictionary; 
@property (strong, nonatomic) NSArray *loadingImages; 
@property CGFloat loadingAnimationDuration; 
@property CGFloat loadingBackgroundAlpha; 

- (void)showViewsWithObject:(id)object withMessage:(Response *)message; 
- (void)enableScreen; 
- (void)disableScreenWillShowLoadingView:(BOOL)willShow; 
- (int)getActiveViewId; 

- (void)applicationWillEnterForeground; 
- (void)applicationDidEnterForeground; 
- (void)applicationDidEnterBackground; 
+0

コードを* text *として公開してください。スクリーンショットではありません。すべての関連定義(プロトコルなど)を追加し、無関係なものを削除します。つまり、それを[mcve]にしてください! –

+0

こんにちは@MartinR、私はここに銀行コードのセキュリティ違反のためにコードを貼り付けることができません。申し訳ありません。しかし、私の投稿は簡単です。私はすぐに - (id )getScreenManagerメソッドを呼び出すことはできません。 –

+0

スクリーンショットとしてコードを投稿するとセキュリティ違反はありませんか?あなたのコードをすべて*投稿する必要はありません。他の誰かが問題を再現できるだけです.-とにかく、私はあなたの問題を再現できません。 –

答えて

2

後でSWIFT 3またはを使用している場合は、その方法についてScreenManagerのためにしてみてください。

Click here

+0

ありがとうございます@Amit。しかし、私はスイフト4とXcode 9を使用しています。 –

+0

ここに私はスイフト3またはそれ以降、ちょうど更新された答えを意味する –

0

続きを読むために私は解決策を見つけました。私はこれがXcodeのGMバグの一種だと思う。私は今このメソッドを呼び出す方法をしたので、Xcodeは他のメソッドと同様にヒントを表示することを期待しています。コードセクション以下に書き込むと、Xcodeはエラーを発生させず、正常にビルドして実行します。今私はXcode 9をダウンロードしています。

override func getScreenManager() -> IScreenManager! { 
    return MultiLayerScreenManager(); 
} 
関連する問題