+(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, он усеян + функциями и - функциями.
Решает ли 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) или любое текстовое содержимое без пробелов. Если проскользнул управляющий символ, который вы не видите в текстовом редакторе, он мог это сделать.
Пример страницы с проблемой?