2013-11-28 5 views
0
метод

вызова из того же класса, который выглядит каквызов метода из того же класса, который выглядит как

-(void)functionA:(TemplateController *)sender ?? 
  1. Это уже определено в .h.
  2. Обычно я делал что-то вроде [self functionA];, но я получаю сообщение об ошибке, если метод экземпляра не найден.
+0

[self функцияA: отправитель]; или [self functionA] ;? – chancyWu

+1

** [self функцияA] ** Ожидается, что вы получите ошибку. Если вам не нужно иметь дело с параметром, тогда вызовите метод, подобный этому ** [self functionA: nil]; ** –

+0

@KumarKl спасибо! это исправило это! – Edu

ответ

2
-(void)functionA:(TemplateController *)sender 

Является ли метод с именем functionA:, который ожидает параметр типа TemplateController

Пока вы не пропуская какого-либо параметра к нему [self functionA].

Это должно быть что-то вроде этого

[self functionA:templateControllerObject] 
0

Ваш метод имеет параметр.

-(void)functionA:(TemplateController *)sender 

Параметр TemplateController поэтому без передачи этого параметра. этот метод не вызывается.

Вы не передаете параметр, чтобы он дал ошибку.

[self FunctionA]; 

Это неправильный путь.

Так передать параметр Как это

[self functionA:templateControllerObject]; 
0

Я думаю, вам нужно прочитать о функции синтаксиса в Objective-C

- (type_r) abc:(type1)x cde:(type2)y def:(type3)z

является методом экземпляра (с использованием требует создания объект), имя которого abc:cde:def:, которое возвращает что-то типа type_r, получает три аргумента x, y и z типов type1, type2 и type 3 соответственно.

Назвать это, вы говорите
class_name obj = [[class_name alloc] init];
[obj abc:x1 cde:y1 def:z1];

Это как сделать это в C++:
class_name obj = new class_name();
obj.func_name(x1, y1, z1);

Если был '+' вместо '-' в начале, это будет означает, что это метод класса, и это, как предполагается, будет называться используя только имя класса
[class_name abc:x1 cde:y1 def:z1];

во-вторых, функции не «реализованы» в файлы заголовков. Они просто «объявлены» в качестве директивы для компилятора, которые не волнуются, вы найдете реализацию этой функции во время соединения.

0

В вашем методе -(void)functionA:(TemplateController *)sender, отправитель является параметром для method.So при вызове метода functionA следует указать параметр, даже если параметр nil, т.е. [self functionA:nil].Если вам не нужен какой-либо параметр, который необходимо передать, вы должны изменить свой метод как -(void)functionA, тогда вы можете назвать его [self functionA].

Смежные вопросы