Метод возвращает цель моего объекта c - PullRequest
0 голосов
/ 29 октября 2011

У меня есть класс с именем myClass, который содержит 3 NSInteger, и я не могу сделать такой метод:

- (myClass)getClass {
    myClass *class1;
    return class1
}

это дает мне ошибку

РЕДАКТИРОВАТЬ: ошибка в.h

- (myClass *)getClass; Error: expected ')' before 'myClass'

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Полагаю, вы хотите вернуть экземпляр myClass.Вы можете сделать это следующим образом:

- (myClass *)getClass {
  myClass *class1 = [[[myClass alloc] init] autorelease];
  return class1;
}

Если вместо этого вы хотите вернуть сам класс:

- (Class)getClass {
  return myClass;
}

Вы можете изменить - на +, если хотитеэто будет метод класса вместо метода экземпляра.Ваш вопрос был не совсем ясен.


В Objective-C вы никогда не сможете вернуть объект по значению, так как размер объекта в Objective-C не известен во время компиляции.Если вам не нравятся звездочки везде, вы можете сделать typedef myClass* myClassRef и вместо этого вернуть myClassRef.

0 голосов
/ 29 октября 2011

Заполнение ответа Mahesh, вам нужно сделать:

- (myClass*) getClass { 
   myClass *class1; 
   return class1; 
}

или если метод статический, вам нужно сделать:

+ (myClass*) getClass { 
   myClass *class1; 
   return class1; 
}
0 голосов
/ 29 октября 2011

В Objective-C каждый тип класса является ссылочным типом.Таким образом, тип возвращаемого значения должен быть myClass*.Когда у нас есть указатель, как -

int *ptr = new int; // The type of ptr is int* but not int. Same is the case for 
                        // class types too.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...