2016-04-07 7 views
2

私は、私のクラスのための迅速なパラメータとして関数を渡すことができる何かを探しています。関数はフィールドとして保存できますか?これはコールバックのための良いアプローチですか?

これは私の現在のコードです。

import Foundation 

class StatusProgress{ 
    static var queue = "dispatch_get_main_queue" //which queue you want it to run under. 
    static var priority = 0 //priority in the queue 
    static var cancelCode = {} 
    static var runCode = {} 
} 

これが機能するかどうかはわかりません。 これは、クラスがパラメータの一部として関数を使用するように定義する適切な方法ですか?例えば、cancelCodeとrunCodeは、渡すことができる関数であると考えられます。

エラーは発生していないようです。

これは、任意のコードを取得してカスタム進行状況ウィンドウで実行する進行クラスを作成するためにこれを行います。

私がやっていることの代わりの方法は、おそらくプロトコルに従わなければならないクラスを必要とするプロパティを作ることかもしれません。それがいかにもうまくいくかはわかりません。

+0

関数はメソッドではありません。 – user2864740

+0

良い点、それを忘れてしまった。 –

答えて

1

確かに、メソッドがパラメータを取らず何も返さない場合、それらの方法を宣言することができます。

しかし、あなたの特性はなぜですかstatic

+0

私は自分のケースで1つの進捗ウィンドウしか持たないので静的です。インスタンスを作成していないので、これを整理するには最良の方法だと思いました。また、iOSでは、一度に1つの進捗ウィンドウしか表示できません。 –

+0

場合によってはパラメータを持つことがありますか? –

+1

@JosephAstrahanおそらく、誰もサブクラスでそれを上書きすることはできません(静的はオーバーライドできません)...クラスvarとして定義されている場合は可能です。ところで、static var f:(Int) - > Int = {return $ 0}も有効なので、有効な '関数型'を持つように定義し、後で再定義して、 ' – user3441734

関連する問題