Переменные экземпляра в методе класса (недоступно) - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь создать класс из того, что раньше было контроллером представления.Он просто содержит некоторые вызовы настройки базы данных.В своем исследовании я обнаружил, что получаю ошибку «Нет известного класса для метода ...», потому что я не определил метод класса должным образом.Вот что у меня было:

View1.m
...
[view2 databseBuild];
...

classA.h
-(void)databaseBuild;

classA.m
 -(void)databaseBuild
       {
         ...
        }

Это то, что я изменил в своем классе:

classA.h
    +(void)databaseBuild;

  classA.m

    +(void)databaseBuild
      {
        ...
       }

Однако то, что я сейчас получаю, - это куча ошибок.Все они в основном связаны с переменной экземпляра, а не с «переменной», доступной в методе класса. Существует ли «лучший метод» для создания классов, чтобы избежать ошибок такого типа?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

+(void)databaseBuild; - это метод класса.Вы называете это с [MyClass databaseBuild];.Методы класса - это методы, которые работают независимо от объекта.Например, [NSArray arrayWithObject:] - это метод класса.

-(void)databaseBuild; - это метод экземпляра.Вы вызываете его с помощью [myClassInstance databaseBuild];. Он в основном используется для взаимодействия с экземпляром объекта.(например, [myArray objectAtIndex:])

Вы сказали, что используете [view2 databseBuild];, который является вызовом метода экземпляра.

Скорее всего, этого было бы достаточно, чтобы # импортировать файл заголовка в файл, в котором вы пытались использовать [view1 databaseBuild].

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

0 голосов
/ 15 февраля 2012

для объективных методов c

- (void)method {}

создаст метод экземпляра, который можно использовать следующим образом:

MyClass *instance = [MyClass alloc] init];
[instance method]

В то время как другая рука

+ (void)method {}

создаст метод класса, который можно вызывать с помощью:

[MyClass method]

Ошибки, которые вы получаете из-за того, что в target-c нет таких вещей, как переменные класса (но вы можете создать статические переменные в глобальной области видимости в качестве обходного пути)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...