2012-01-29 4 views
0

私はObjective-Cのに新たなんだ、私は道オフかもしれ...のiOS:メソッドや関数には

私は私の 'のviewDidLoad' メソッドでこれを持っている:

NSArray *myArray; 
NSString *cow = @"Cow"; 
NSString *pig = @"Pig"; 
NSString *frog = @"Frog"; 
NSString *sheep = @"Sheep"; 
myArray = [NSArray arrayWithObjects: cow, pig, frog, sheep, nil]; 
randomNumber.text = [myArray objectAtIndex: arc4random() % (4)];  

私がしたいですこれを独自の方法にして、いつでもランダムな動物を手に入れることができます...しかし、プログラムが始まるときにこれが必要になります。このようなメソッドにはどうすればアクセスできますか?

私は間違っているかもしれないので、私は提案、訂正などに役立つと思います。

- (void)generateAnimal{ 
    NSArray *myArray; 
    NSString *cow = @"Cow"; 
    NSString *pig = @"Pig"; 
    NSString *frog = @"Frog"; 
    NSString *sheep = @"Sheep"; 
    myArray = [NSArray arrayWithObjects: cow, pig, frog, sheep, nil]; 
    randomNumber.text = [myArray objectAtIndex: arc4random() % (4)];  
} 

も::このように

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self generateAnimal; 


} 
+0

なぜ投票が下りましたか? –

答えて

1
[self generateAnimal]; //would work great :) 
+0

ああ。メソッドは呼び出される前にしなければなりませんか? –

+0

PS:文字列の配列を作る良い方法はありますか? –

+0

いいえ、あなたのコードを大括弧 "[]"で囲んでいない点を除いて、あなたのコードはちょうどいいです。 – Sagi

3

鷺が[self generateAnimal];募集効果を持つことになり、この場合には、前述のように。一般に、Objective-C(他のオブジェクト指向言語と同様)では、メソッドをクラス/インスタンスに結びつけるので、既存のインスタンスに対してのみ呼び出すことができます。 (もちろんクラスメソッドなどがありますが、もっと抽象的に言えば)

のObjective-Cは、鷺の答えに、自分の一例([super viewDidLoad])の両方で見られるように、あなたは角括弧([ ])のメソッドにこれらの呼び出しを囲みたいです。すべての通話はこのパターン[target method: parameter]に従います。 Sagiの答えにちょっとした文脈を追加したいと思っています。

関連する問題