10

すべてのviewcontrollerクラスで、どこからでも呼び出すことができるメソッドを定義するにはどうすればよいですか?

私はjsonファイルを取得するメソッドを持っていますが、アプリでいくつかのjson呼び出しがあるので、それを再利用できるようにしたいと思います。

手伝って頂けますか?

4

4 に答える 4

6

次のカテゴリから追加できます。

編集

新しい.h.mファイルペアを.hファイルに作成します。

@interface UIViewController(JSON)
-(void) bringJSON;
-(void) fetchData:(NSData*) data;


@ end

次に、.mファイルで:

@implementation UIViewController(JSON)

-(void) bringJSON {

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

[NSData dataWithContentsOfURL:yourURL];

[self performSelectorOnMainThread:@selector(fetchData:)
withObject:data waitUntilDone:YES];

});

}


-(void) fetchData:(NSData*) data {

//parse - update etc.

}


@end

NSArrayを返すことを想定している場合は、そこに任意のメソッドを配置して、すべてのUIViewControllerを拡張できます。メソッドbringJSONは、すべてのUIViewControllerとそのサブクラスで使用できます。

于 2012-06-01T15:59:46.907 に答える
4

「+」記号で定義される静的メソッドについて考えていると思います。

+ (String) yourFunctionName:(NSInteger)someValue .....

次に、最初にクラス名を付けてどこでも呼び出すことができます。

[YourClassName yourFunctionName:5];

インスタンス化する必要があるオブジェクトにアクセスする関数が必要な場合は、シングルトン パターンを実行する必要があります。

于 2012-06-01T15:40:10.593 に答える
3

メソッドの戻り値の型の前に + 記号を使用します。

例えば:

 + (void) Name: (NSString  *) str{

 }
于 2013-02-23T14:28:46.750 に答える
2

そのオブジェクトを含む任意のファイルから呼び出すことができるメソッドを使用して (本質的に) 別のオブジェクトを作成する方法であるため、最初の回答を追加しました。

また、objective-c も単なる C であることを忘れないでください。呼び出すことができる ANSI-C ルーチンを単に含む .c ファイルを含めることができます。

于 2012-06-01T15:43:56.593 に答える