Это проблема, которую я до сих пор не понимаю.
Иногда мне приходится писать:
NSString* myVariable;
myVariable = @"Hey!";
Затем, например, я определяю структуру "DemoStruct" и получаю переменную, которая ее использует. Допустим, у меня есть структура, в которой есть x и y переменные типа double.
Я хочу передать эту переменную методу, который затем манипулирует моей переменной, и я хочу, чтобы эта манипуляция влияла на контекст, из которого я передал переменную этому методу. Так что мне нужен указатель, верно.
Я передаю это так:
[someObject someMethod:&myVarThatUsesTheStruct]
этот метод теперь выглядит так:
- (void)someMethod:(DemoStruct*)myVar {
(*myVar).x += 10;
}
Перед вызовом компонент x структуры был, скажем, 1000. Теперь добавляется 10, и это 1010 после вызова метода.
Но я действительно с трудом понимаю, почему я должен использовать звездочку * для myVar в методе, поскольку я уже говорил в заголовке метода, что myVar - это указатель на DemoStruct. Я просто передаю & myVarThatUsesTheStruct адрес памяти.
Может кто-нибудь объяснить, почему это так?