どのようにすべてのviewcontrollerクラスのどこからでも呼び出せるメソッドを定義できますか?iOS:パブリックメソッドを定義する方法
私はjsonファイルを持ってきて、私はそれが私のアプリにいくつかのjson呼び出しを持っているので、私はそれが再利用可能であることを望むメソッドを持っています。
私を助けることができますか?
どのようにすべてのviewcontrollerクラスのどこからでも呼び出せるメソッドを定義できますか?iOS:パブリックメソッドを定義する方法
私はjsonファイルを持ってきて、私はそれが私のアプリにいくつかのjson呼び出しを持っているので、私はそれが再利用可能であることを望むメソッドを持っています。
私を助けることができますか?
:
EDIT
新しい.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
ここで、yあなたはNSArrayを返すでしょう、そこに任意のメソッドを配置し、すべてのUIViewControllerを拡張することができます。メソッドbringJSONは、すべてのUIViewControllerおよびそのサブクラスで使用できます。
"+"記号で定義される静的メソッドについて考えていると思います。
+ (String) yourFunctionName:(NSInteger)someValue .....
次にあなたが最初のクラス名でどこにでもそれを呼び出すことができます。
[YourClassName yourFunctionName:5];
あなたがインスタンス化される必要があるオブジェクトにアクセスする機能を持っている必要がある場合は、あなたがシングルトンを行うことになるでしょうパターン。
最初の答えは、そのオブジェクトを含むファイルから呼び出せるメソッドを使って(本質的に)別のオブジェクトを作成する方法であるため、最初の答えを示しました。
また、objective-cは単にCにすぎないことにも注意してください。.cファイルには、呼び出すことができるANSI-Cルーチンが含まれていてもかまいません。あなたは、カテゴリを通してそれを追加することができ
私は、クラスメソッドの私の問題は、インスタンス変数を使用することができないので、私のリターンは常にエラーを取得していることです。クラス変数を使用する方法はありますか? シングルトンについて、私はそれについて読むべきだと思います。シングルトンはプロトコルと異なりますか? 私はfrontendからcamedし、約1ヶ月前からxcodeに入っています。だからもっと複雑なことをするのは少し難しいです。 oyurヘルプの人のための多くのTks! – 88fsantos
いつでもC++オブジェクトを実装することができます。この方法で、保護された/プライベート変数に関数アクセスのみを提供することができます。 XCodeには、C++オブジェクトをObjective-Cコードにコンパイルする機能があります。私はいくつかのリンクを見つけようとしますが、ここでStackOverflowのサンプルコードなしの記事です。 http:// stackoverflow。com/questions/406753/how-well-is-objective-c-supported – trumpetlicks
tks man!私はそれを読むでしょう – 88fsantos
メソッドの戻り値の型の前に+記号を使用します。例えば
:
+ (void) Name: (NSString *) str{
}
シングルトンhttp://en.wikipedia.org/wiki/Singleton_pattern –
rooster117正しいです。あなたは静的メソッドを参照しています。 Objective-Cではすべてのメソッドがpublicであることに注意してください。ただし、メソッドを「非表示」するか、クラス拡張のメソッドを宣言することによってコンパイラの警告を発することができます。それでも、彼らは本当に私的ではありません。 –