2010-08-21 2 views
0

В Interface Builder I в Library-> Классы, когда я выбираю класс, который я сделал в XCode, а затем отобразить действия, я могу видеть два с тем же именем:IBActions Foo и Foo:

foo 
foo: 

Что разница между этими двумя foos?

ответ

2

foo - метод, который не принимает никаких аргументов. foo: передает аргумент или аргументы в свой метод.

Пример:

-(IBAction)foo; 

будет показано, как foo в IB.

-(IBAction)foo:(id)sender; 

будет отображаться как foo: в IB.

Я не знаю, почему у них одно и то же имя, есть ли у вас такая установка?

+0

Я сделал один в IB, а затем я пошел в XCode и сделал еще один, чтобы я мог написать его реализацию. –

1

IB предполагает, если ваше создание файлов класс с помощью IB, что вы будете с помощью отправителя и поэтому он создает конструкт

-(IBAction)foo:(id)sender; 

Вы обычно нужна информация о отправителе так что я бы придерживаться эта конструкция. Если вам не нужен отправитель в вашей реализации, просто проигнорируйте его.

-(IBAction)foo:(id)sender { 
    [someObject doAMethod]; 
}