2012-01-29 48 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

爲什麼選擇投票? – 2012-01-29 21:57:56

回答

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

啊。該方法必須在被調用之前? – 2012-01-29 20:52:07

+0

PS:有沒有更好的方法來創建一個字符串數組? – 2012-01-29 20:54:50

+0

不,您的代碼只是花花公子,除非您沒有將方法放在方括號「[]」中。 – Sagi 2012-01-29 20:55:02

3

正如史記前面提到的,在這種情況下[self generateAnimal];將有希望達到的效果。一般而言,Objective-C(與任何其他面向對象的語言一樣)將方法附加到類/實例,因此只能在現有實例上調用它們。 (顯然,有類方法等,但更抽象地講)

的Objective-C要你附上這些調用在方括號([ ]),因爲無論是在史記答案,並在自己的例子([super viewDidLoad])看到的方法。所有的呼叫都遵循這種模式[target method: parameter]。希望它是有道理的,只是想給Sagi的答案增加一點上下文。