Alfred
Paks
BOOL is an unsigned char rather than a primitive type, variables of type BOOL can contain values other than YES and NO.
Stanislav
Alfred
разница между двумя только в месте где берется указатель от a
Paks
тут я так понимаю дело в том, что YES это 1
typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#define OBJC_BOOL_DEFINED
I'm That Fel!x
сейчас же нельзя писать под non arc? все пишут под arc?
Paks
тут я так понимаю дело в том, что YES это 1
#if (TARGET_OS_IPHONE && __LP64__) || TARGET_OS_WATCH
typedef bool BOOL;
#else
typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#endif
#define YES ((BOOL)1)
#define NO ((BOOL)0)
Paks
Stanislav
Так, а почему в вопросе с блоком в первом случае 2, а во втором 1?
q210
адрес переменной a меняется после объявления блока
Alfred
резултат не всегда 1, зависит от мрц или арц
Alfred
но насчет мрц хрен с ним, можно просто попытаться понять почему 1
q210
__block переменные могут переезжать со стека в heap
Stanislav
Епт. После блока что, копия a создается?
q210
думаю в этом случае так и происходит
q210
не копия, переменная перемещается в памяти
Stanislav
да вот дебаггер говорит о другом
q210
*значение переменной
q210
ну старый адрес не очищается сразу, что логично
q210
потому по старому адресу по прежнему будет 0
Stanislav
Stanislav
Paks
bool b1 = 2;
if (b1) printf("REAL b1 \n");
if (b1 != true) printf("NOT REAL b1 \n");
BOOL b2 = 2;
if (b2) printf("REAL b2 \n");
if (b2 != YES) printf("NOT REAL b2 \n");
Paks
результаты будут разные)
Paks
тоже можно считать каверзным)
Paks
пока что)
Paks
до выхода 64 битной архитектуры - это тоже было каверзным)
Paks
хотя кажется и банальным)
Alfred
Alfred
Если распечатать [block class] в мрц и арц будут разные классы
Paks
Paks
Stanislav
Ну, если честно, инициализировать BOOL двойкой вообще не самая лучшая идея
Paks
в 64 битной архитектуре - пофиг как
Paks
там будет 1
Paks
в 32 битной - там хранится число)
Paks
то, которое задаешь
Stanislav
Я понимаю) Просто имхо лучше вообще так не делать
Paks
на собесеовании спросят что будет на выходе
Paks
а не лучше или хуже)
Ilkhom
Paks
ну да) но тут же ща тема о собеседованиях) и что спрашивают
Paks
кстати)
Paks
раз тоже попал на вопрос
Alfred
Paks
создают NSDate *date = .... ну и инициализирует 00:00
Paks
выводят в консоль - разница в 4 часа с тем, которое ввели
Paks
почему?
Paks
откуда 4 часовая разница?)
q210
UTC vs local time
Stanislav
Paks
Stanislav
Ну вот, выше ответили
q210
у меня разница в 3 часа
q210
потому что у меня +3 гмт
q210
это человек живёт в +4 видимо
Paks
так почему 4 часа было?
Paks
нет, человек был в моей комнате и тест на моем устройстве был)
Eduard
на симе?
Paks
ага
Eduard
ну так там по дефолту регион us
Paks
а у юс какой гмт? +/-4?
Stanislav
NSDate *date = [NSDate new]; // сейчас 16:33
Printing description of date:
2017-02-08 13:33:37 +0000
Stanislav
Вроде все правильно. UTC+3, как у меня и должно быть
Paks
ну вот было 4 часа разницы) ток там не через текущую дату инициализировали, а просто как 00:00 часов
Paks
оно возвращало в нслог 20:00
Stanislav
Через дата форматтер?
q210
хм
q210
у проекта есть default Time Zone
q210
которая используется при отдаче времени
Paks
возможно, но часовых поясов в задании и таймзон не указывали)
Paks
бо я бы за это тоже ухватился
Paks
я просто реально не мог обьяснить число 4)
Paks
почему именно 4, и у себя переодически я с таким тоже сталкивался, когда с датами работал
Stanislav
Ну так а правильный ответ тебе не сказали? (:
Paks
неа)