Просто добавленный ignore: []
на конкретную страницу для конкретной формы, это решение сработало для меня.
$("#form_name").validate({
ignore: [],
onkeyup: false,
rules: {
},
highlight:false,
});
Последние два идентичны; "атомарный" поведение по умолчанию (<забастовка> примечание, что это не на самом деле ключевое слово; это определяется только отсутствием nonatomic
, забастовка> - atomic
была добавлена как ключевое слово в последних версиях llvm/clang).
Предположение, что Вы - @synthesizing реализации метода, атомарные по сравнению с неатомарными изменениями сгенерированный код. Если Вы пишете, что Ваш собственный метод set/методы get, атомарная/неатомарная/сохранять/присваивать/копия, являются просто консультативными. (Отметьте: @synthesize является теперь поведением по умолчанию в последних версиях LLVM. Нет также никакой потребности объявить переменные экземпляра; они будут синтезироваться автоматически также и будут иметь _
предварительно ожидаемый к их имени для предотвращения случайного прямого доступа).
С "атомарным", синтезируемый метод set/метод get гарантирует, что целый значение всегда возвращается от метода get или набора методом set, независимо от действия метода set по любому другому потоку. Таким образом, если поток A будет посреди метода get, в то время как поток B называет метод set, фактическое жизнеспособное значение - автовыпущенный объект, скорее всего - будет возвращен вызывающей стороне в A.
В nonatomic
, никакие такие гарантии не сделаны. Таким образом, nonatomic
значительно быстрее, чем "атомарный".
, Что "атомарный" делает не , делают, делают любые гарантии о потокобезопасности. Если поток A звонит методу get одновременно с потоком B и C вызов метода set с различными значениями, поток A может получить любое из трех возвращенных значений - тот до любых называемых методов set или любое из значений передал в методы set в B и C. Аналогично, объект может закончиться со значением от B или C, никакого способа сказать.
Удостоверяющаяся целостность данных - одна из основных проблем многопоточного программирования - достигается другими средствами.
Добавление к этому:
atomicity
из единственного свойства также не может гарантировать потокобезопасность, когда несколько зависимых свойств находятся в игре.
Рассмотрите:
@property(atomic, copy) NSString *firstName;
@property(atomic, copy) NSString *lastName;
@property(readonly, atomic, copy) NSString *fullName;
В этом случае, распараллельте A, мог переименовывать объект путем вызова setFirstName:
и затем вызова setLastName:
. Тем временем поток B может звонить fullName
промежуточный поток A два вызова и получит новое имя вместе со старой фамилией.
Для обращения к этому Вам нужно транзакционная модель . Т.е. некоторый другой вид синхронизации и/или исключения, которое позволяет исключать доступ к [1 110], в то время как зависимые свойства обновляются.
Атомарные гарантии, что доступ к свойству будет выполнен атомарным способом. Например, это всегда возвращает полностью инициализированные объекты, любой получает/устанавливает свойства на одном потоке, должен завершиться, прежде чем другой может получить доступ к нему.
, Если бы Вы воображаете следующую функцию, происходящую на двух потоках сразу, Вы видите, почему результаты не были бы симпатичны.
-(void) setName:(NSString*)string
{
if (name)
{
[name release];
// what happens if the second thread jumps in now !?
// name may be deleted, but our 'name' variable is still set!
name = nil;
}
...
}
Профессионалы: Возврат полностью инициализированных объектов каждый раз делает его лучше всего выбором в случае многопоточности.
Недостатки: хит Производительности, делает выполнение немного медленнее
В отличие от Атомарного, это не гарантирует, чтобы полностью инициализированный объект возвратился каждый раз.
Профессионалы: Чрезвычайно быстрое выполнение.
Недостатки: Возможности мусора оценивают в случае многопоточности.
Это объяснено в документации Apple , но ниже некоторые примеры того, что на самом деле происходит.
<забастовка> Примечание, что нет никакого "атомарного" ключевого слова, если Вы не определяете "неатомарный", тогда свойство является атомарным, но определение "атомарного" явно приведет к ошибке.
, Если Вы не определяете "неатомарный", тогда свойство, является атомарным, но можно все еще определить "атомарный" явно в последних версиях, если Вы хотите.
//@property(nonatomic, retain) UITextField *userName;
//Generates roughly
- (UITextField *) userName {
return userName;
}
- (void) setUserName:(UITextField *)userName_ {
[userName_ retain];
[userName release];
userName = userName_;
}
Теперь, атомарный вариант немного более сложен:
//@property(retain) UITextField *userName;
//Generates roughly
- (UITextField *) userName {
UITextField *retval = nil;
@synchronized(self) {
retval = [[userName retain] autorelease];
}
return retval;
}
- (void) setUserName:(UITextField *)userName_ {
@synchronized(self) {
[userName_ retain];
[userName release];
userName = userName_;
}
}
В основном, атомарная версия должна взять блокировку, чтобы гарантировать потокобезопасность и также наталкивается касательно, рассчитывают на объект (и количество автовыпуска для балансировки его) так, чтобы объект, как гарантировали, будет существовать для вызывающей стороны, иначе существует потенциальное состояние состязания, если другой поток устанавливает значение, заставляя касательно количества спадать 0.
существует на самом деле большое количество различных вариантов того, как эти вещи работают в зависимости от того, являются ли свойства скалярными величинами или объектами, и как сохраняют, копируют, только для чтения, неатомарный, и т.д. взаимодействуют. В целом синтезаторы свойства просто знают, как сделать "правильную вещь" для всех комбинаций.
Самый легкий ответ сначала: нет никакого различия между Вашими вторыми двумя примерами. По умолчанию средства доступа свойства являются атомарными.
Атомарные средства доступа в не собрали "мусор" среда (т.е. когда использование сохраняет/выпускает/автовыпускает), будет использовать блокировку, чтобы гарантировать, что другой поток не вмешивается в корректную установку/получение значения.
Посмотрите" Производительность и Поточная обработка " раздел Objective C Apple 2,0 документации еще для некоторой информации и для других соображений при создании многопоточных приложений.