Основной подсчет сообщений в Objective-c - PullRequest
2 голосов
/ 26 января 2012

В следующем примере, сколько сообщений отправлено на myObject?

- (void) myMethod:(id) myObject
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
}

Мне просто интересно, что Objective-c потенциально может кэшировать значение, возвращаемое myStringProperty в стек.Значение, возвращаемое myStringProperty, может меняться между последовательными сообщениями, поэтому, возможно, кэширование не имеет смысла.

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Три

Мне просто любопытно, что Objective-c потенциально может кэшировать значение, возвращаемое myStringProperty в стеке. Значение, возвращаемое myStringProperty, может меняться между последовательными сообщениями, поэтому, возможно, кэширование не имеет смысла.

Нет, это не кешируется. Каждое сообщение об объекте отправляется при условии, конечно, что myObject не nil.

Компилятор не имеет представления о каких-либо побочных эффектах при выполнении метода (1) или влиянии глобального состояния (2).

  1. например. myObject или что-либо, на что он ссылается, когда-либо изменяются во время получения myStringProperty?
  2. например. на результат влияет текущее время?
2 голосов
/ 26 января 2012

Вы можете установить точку останова на - [myObject myStringProperty] и убедиться в этом сами.Если myStringProperty - это метод получения, который вы реализуете самостоятельно, просто щелкните в левом желобе рядом с реализацией метода, чтобы установить точку останова.

Если это метод синтезированного метода доступа, введите его как символическую точку останова в точках останова XCodeнавигатор.Нажмите на значок со стрелкой вправо в разделе навигатора, чтобы выбрать навигатор точек останова, нажмите + в нижней части окна и выберите «Добавить символическую точку останова…».Введите - [TheClassName myStringProperty] в поле символа, затем нажмите Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...