function UniqueDateTime(format='',language='en-US'){
//returns a meaningful unique number based on current time, and milliseconds, making it virtually unique
//e.g : 20170428-115833-547
//allows personal formatting like more usual :YYYYMMDDHHmmSS, or YYYYMMDD_HH:mm:SS
var dt = new Date();
var modele="YYYYMMDD-HHmmSS-mss";
if (format!==''){
modele=format;
}
modele=modele.replace("YYYY",dt.getFullYear());
modele=modele.replace("MM",(dt.getMonth()+1).toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
modele=modele.replace("DD",dt.getDate().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
modele=modele.replace("HH",dt.getHours().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
modele=modele.replace("mm",dt.getMinutes().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
modele=modele.replace("SS",dt.getSeconds().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
modele=modele.replace("mss",dt.getMilliseconds().toLocaleString(language, {minimumIntegerDigits: 3, useGrouping:false}));
return modele;
}
Свойства и ivars - это две совершенно разные вещи.
А переменная экземпляра - это переменная, хранящаяся внутри объекта, поэтому каждый экземпляр имеет свою собственную. На него ссылаются путем добавления указателя относительно объекта pointer / self (немного косвенно для современной среды выполнения, но функционально эквивалентно). ivars обычно являются внутренними по отношению к классу и по умолчанию могут быть доступны только для класса и его потомков (@protected). Внутри методов они доступны без квалификации, в противном случае к ним можно (но редко, и обычно не следует) обращаться через косвенный доступ, например obj-> ivar.
Свойство определяет геттер и сеттер (сеттер не является обязательным) интерфейс . Это все, что он делает. Он определяет два общедоступных метода:
- (TYPE) propname;
- (void) setPropname: (TYPE) newPropname;
Они определены как методы точно так, как если бы вы объявили их вот так, ни больше, ни меньше.
Я думаю, вы в значительной степени там. @Property и @synthesize делают объявления и реализацию средств доступа для уже объявленного ivar. У вас есть различные атрибуты, которые вы также можете определить в @property, что дает вам контроль над тем, как он создается, чтобы сделать его подходящим для ivar
. Взгляните на «Объявленные свойства Objective C 2.0»