
Maksim
08.02.2017
13:11:09
а не прибавил
1 будет

Alfred
08.02.2017
13:11:29
разыменование. потом прибавление

Google

Maksim
08.02.2017
13:13:05
и все равно будет 1 )

-_-
08.02.2017
13:13:15

Dmitriy
08.02.2017
13:13:41
ну видать уже переделали тип) раньше было вот так)

Alfred
08.02.2017
13:13:46

Dmitriy
08.02.2017
13:13:56
BOOL is an unsigned char rather than a primitive type, variables of type BOOL can contain values other than YES and NO.

F
08.02.2017
13:14:18
я почему-то думал, что во втором примере указатель на блок
опять 2, что ли
яннп
спал пару часов, теперь туплю на ровном месте

-_-
08.02.2017
13:15:04

Alfred
08.02.2017
13:15:17
разница между двумя только в месте где берется указатель от a

Dmitriy
08.02.2017
13:16:43

F
08.02.2017
13:16:51
я чую, что там что-то должно быть с захватом скоупа блоком

Google

Sergey
08.02.2017
13:17:35
сейчас же нельзя писать под non arc? все пишут под arc?

Dmitriy
08.02.2017
13:17:37
тут я так понимаю дело в том, что 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)

-_-
08.02.2017
13:20:20
Так, а почему в вопросе с блоком в первом случае 2, а во втором 1?

F
08.02.2017
13:21:01

q210
08.02.2017
13:21:03
адрес переменной a меняется после объявления блока

F
08.02.2017
13:21:06
можно писать и под нон-арк

-_-
08.02.2017
13:21:34

F
08.02.2017
13:21:35

Alfred
08.02.2017
13:21:40
резултат не всегда 1, зависит от мрц или арц

F
08.02.2017
13:22:01
тут дело в __block
надо знать как под капотом работает этот модификатор

Alfred
08.02.2017
13:22:21
но насчет мрц хрен с ним, можно просто попытаться понять почему 1

q210
08.02.2017
13:22:33
__block переменные могут переезжать со стека в heap

-_-
08.02.2017
13:22:48
Епт. После блока что, копия a создается?

q210
08.02.2017
13:22:49
думаю в этом случае так и происходит
не копия, переменная перемещается в памяти

-_-
08.02.2017
13:23:25
да вот дебаггер говорит о другом

q210
08.02.2017
13:23:26
*значение переменной
ну старый адрес не очищается сразу, что логично

Google

q210
08.02.2017
13:23:51
потому по старому адресу по прежнему будет 0

-_-
08.02.2017
13:23:55

Dmitriy
08.02.2017
13:24:40
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");
результаты будут разные)
тоже можно считать каверзным)
пока что)
до выхода 64 битной архитектуры - это тоже было каверзным)
хотя кажется и банальным)

Alfred
08.02.2017
13:26:32
Если распечатать [block class] в мрц и арц будут разные классы

Dmitriy
08.02.2017
13:27:17

-_-
08.02.2017
13:28:12
Ну, если честно, инициализировать BOOL двойкой вообще не самая лучшая идея

Dmitriy
08.02.2017
13:28:49
в 64 битной архитектуре - пофиг как
там будет 1
в 32 битной - там хранится число)
то, которое задаешь

-_-
08.02.2017
13:29:32
Я понимаю) Просто имхо лучше вообще так не делать

Google

Dmitriy
08.02.2017
13:29:44
на собесеовании спросят что будет на выходе
а не лучше или хуже)

Ilkhom
08.02.2017
13:30:13

Dmitriy
08.02.2017
13:30:35
ну да) но тут же ща тема о собеседованиях) и что спрашивают
кстати)
раз тоже попал на вопрос

Alfred
08.02.2017
13:30:41

Dmitriy
08.02.2017
13:30:59
создают NSDate *date = .... ну и инициализирует 00:00
выводят в консоль - разница в 4 часа с тем, которое ввели
почему?
откуда 4 часовая разница?)

-_-
08.02.2017
13:31:21

q210
08.02.2017
13:31:29
UTC vs local time

-_-
08.02.2017
13:31:31

Dmitriy
08.02.2017
13:31:33

-_-
08.02.2017
13:31:48
Ну вот, выше ответили

Dmitriy
08.02.2017
13:31:50

q210
08.02.2017
13:32:09
у меня разница в 3 часа
потому что у меня +3 гмт
это человек живёт в +4 видимо

Google

Dmitriy
08.02.2017
13:32:29
так почему 4 часа было?
нет, человек был в моей комнате и тест на моем устройстве был)

Eduard
08.02.2017
13:33:17
на симе?

Dmitriy
08.02.2017
13:33:23
ага

Eduard
08.02.2017
13:33:38
ну так там по дефолту регион us

Dmitriy
08.02.2017
13:34:01
а у юс какой гмт? +/-4?

-_-
08.02.2017
13:34:15
NSDate *date = [NSDate new]; // сейчас 16:33
Printing description of date:
2017-02-08 13:33:37 +0000
Вроде все правильно. UTC+3, как у меня и должно быть

Dmitriy
08.02.2017
13:35:41
ну вот было 4 часа разницы) ток там не через текущую дату инициализировали, а просто как 00:00 часов
оно возвращало в нслог 20:00

-_-
08.02.2017
13:36:03
Через дата форматтер?

q210
08.02.2017
13:36:10
хм
у проекта есть default Time Zone
которая используется при отдаче времени

Dmitriy
08.02.2017
13:36:26
возможно, но часовых поясов в задании и таймзон не указывали)
бо я бы за это тоже ухватился
я просто реально не мог обьяснить число 4)
почему именно 4, и у себя переодически я с таким тоже сталкивался, когда с датами работал

-_-
08.02.2017
13:40:02
Ну так а правильный ответ тебе не сказали? (:

Dmitriy
08.02.2017
13:41:02
неа)

Alfred
08.02.2017
13:41:21
может он там подсвизлил