Это похоже на то, что если я «передаю сообщение» между двумя объектами, и если они были созданы в разных потоках, тогда вызванный метод все равно будет работать в потоке своего объекта?
Почему вызов метода в Objective-C называется передачей сообщений?
Ответы (1)
Вызов метода разрешается во время компиляции, и можно ожидать, что метод будет присутствовать во время выполнения. Передача сообщений разрешается во время выполнения, и объекту-получателю не нужно понимать, как обрабатывать сообщение.
Термин «передача сообщений» в Objective-C не имеет ничего общего с многопоточностью.
Я нашел хорошую статью на эту тему здесь: http://iskren.info/reading/info/ObjC/reading/dynamite.html
person
Greg Hewgill
schedule
27.01.2012
Означает ли это, что в С++, если я помечаю метод как
virtual
, то вызов его технически является «передачей сообщений»? Это означало бы, что все вызовы методов в Java также являются «передачей сообщений».
- person AppleGrew; 27.01.2012
Нет, потому что хотя методы
virtual
(как в C++, так и в Java) вызываются с использованием позднего связывания, компилятор и среда выполнения гарантируют, что на другом конце вызова действительно есть метод. В Objective-C вы можете передать любое сообщение любому объекту, и объект либо обработает его, либо нет.
- person Greg Hewgill; 27.01.2012