Вызов публичного метода - PullRequest
       14

Вызов публичного метода

0 голосов
/ 30 апреля 2011

Я пытаюсь выяснить, как централизовать метод, который я использую в нескольких моих ViewControllers. У меня уже был синглтон, который я использовал для некоторых переменных. Я позвонил в синглтон-класс Shared.

Я переместил свой метод в класс Shared и попытался вызвать его так:

m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];

Это дает мне исключение, говоря, что селектор не существует, когда он пытается вызвать его.

Я уже импортировал Shared.h. Любые другие мысли будут оценены.

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Если ваш класс называется «Shared», то похоже, что вы пытаетесь вызвать метод класса, а не метод экземпляра.Итак, вам нужно объявить метод с + вместо -.

0 голосов
/ 30 апреля 2011

вот правильный шаблон для создания Singleton в target-c: (Я буду использовать пример объекта User .. взят из кода, который я открыл передо мной). Кроме того, обратите внимание, что между классами Singleton и методами Static Class есть различие, как обсуждено здесь.

в файле .h объявите статический метод, который возвращает экземпляр вашего класса.

+(User *) currentUser;

в файле .m создайте статическую переменную, которая содержит ваш экземпляр

static User * _user;

затем в своем классе .m создайте свой "публичный" статический аксессор GET, который возвращает или создает и возвращает вашу статическую переменную

+ (User *) currentUser
    {

        if (!_user) 
        {
            _user =[[User alloc]init];
            // ... init the singleton user properties and what not
            // ...
        }

        return _user;   

    }

затем, когда вы хотите вызвать класс Singleton, просто убедитесь, что User.h импортирован, и вызовите [[User currentUser] someMethodorProperty];

наслаждаться

...