почему я инициировал режим причуд в IE8?

+(void)methodname является переменной класса, а -(void)methodname является объектной переменной.

Допустим, вы создали вспомогательный класс, в котором есть метод для обращения строки. Класс, который вы называете MYUtility.

Если вы используете +, как

+ (NSString *)reverse:(NSString *)stringToReverse

Вы можете использовать его напрямую, как

NSString *reversed = [MYUtility stringToReverse:@"I Love objective C"];

, если вы использовали -, как

- (NSString *)reverse:(NSString *)stringToReverse

You должны использовать:

MYUtility *myUtil = [[MYUtility alloc] init];
NSString *reversed = [myUtil stringToReverse:@"There are many ways to do the same thing"];

С помощью функции, основанной на классе, вы просто вызываете напрямую, но у вас нет доступа ни к каким локальным переменным, кроме #defines, которые вы можете сделать, потому что класс не создан.

Но с - (NSString вы должны создать экземпляр класса перед использованием, и у вас есть доступ ко всем локальным переменным.

Это не самая лучшая вещь, и оставайтесь с ней, многие классы имеют оба, просто посмотрите на заголовочный файл для NSString, он усеян + функциями и - функциями.

11
задан Tim Sheiner 30 October 2009 в 23:33
поделиться

1 ответ

Решает ли IE, какой режим использовать на уровне сервера

Не обычно, нет. Есть уродство списка просмотра совместимости , который зависит от сайта, но возвращает вас только в стандартный режим IE7, а не в режим причуд в стиле IE5.5.

В остальном ваш код выглядит нормально, если этот DOCTYPE является самым первым элементом на странице. IE будет принудительно использовать document.compatMode = 'BackCompat' , если перед типом документа есть комментарий, PI, объявление XML (до IE8) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.

Пример страницы с проблемой?

Есть уродство списка просмотра совместимости , который зависит от сайта, но возвращает вас только в стандартный режим IE7, а не в режим причуд в стиле IE5.5.

В остальном ваш код выглядит нормально, если этот DOCTYPE является самым первым элементом на странице. IE будет принудительно использовать document.compatMode = 'BackCompat' , если перед типом документа есть комментарий, PI, объявление XML (до IE8) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.

Пример страницы с проблемой?

Есть уродство списка просмотра совместимости , который зависит от сайта, но возвращает вас только в стандартный режим IE7, а не в режим причуд в стиле IE5.5.

В остальном ваш код выглядит нормально, если этот DOCTYPE является самым первым элементом на странице. IE будет принудительно использовать document.compatMode = 'BackCompat' , если перед типом документа есть комментарий, PI, объявление XML (до IE8) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.

Пример страницы с проблемой?

IE будет принудительно использовать document.compatMode = 'BackCompat' , если перед типом документа есть комментарий, PI, объявление XML (до IE8) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.

Пример страницы с проблемой?

IE будет принудительно использовать document.compatMode = 'BackCompat' , если перед типом документа есть комментарий, PI, объявление XML (до IE8) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.

Пример страницы с проблемой?

22
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: