Семантическая проблема XCode "Элемент Initializer не является константой времени компиляции" - PullRequest
2 голосов

У меня есть эта ошибка при вызове метода NSMakeRange. Что я делаю не так?

#import <Foundation/Foundation.h>
//
NSRange range1 = NSMakeRange(12, 5);

Ответы [ 2 ]

5 голосов
/ 25 марта 2012

Когда вы инициализируете переменную вне функции или метода, вы можете использовать только постоянные значения: вы не можете выполнять какой-либо код.Здесь проблема в том, что вы пытаетесь выполнить NSMakeRange.(См. Ответы на этот вопрос , который похож).

Решение состоит в том, чтобы объявить range1, но не присваивать ему никакого значения, а затем реализовать метод +initialize, которыйустанавливает значение.initialize - это метод класса, который вызывается до вызова любых других методов в вашем классе.

+ (void)initialize {
    if (range1 == NULL) {
        range1 = NSMakeRange(12, 5);
    }
}
0 голосов
/ 25 марта 2012

initializer-element-is-not-a-compile-time-constant Ошибка будет возникать при попытке инициализировать переменную внутри @implementation и вне каких-либо методов.Вы можете объявить переменные перед @implementation, чтобы к ним могли обращаться все методы.И вы можете объявить переменную внутри метода, чтобы она была видна внутри этого метода.

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