Как вы, возможно, знаете, указатель указывает на адрес объекта и является способом, которым вы ссылаетесь на объект. Двойной указатель иногда используется в Objective-C, главным образом для возврата NSErrors, где вы хотите вернуть адрес, то есть указатель, к объекту ошибки (NSError), если произошла ошибка, таким образом, вы передаете указатель, присвоенный null и вызывающая сторона может изменить этот указатель так, чтобы он указывал на адрес другого указателя, который, в свою очередь, указывает на объект NSError.
Амперсанд (&) в основном используется API-интерфейсами C более низкого уровня, например Основная графика. Они используются для ссылки на вещи, такие как текущий контекст. Пока большая часть вашего кода использует квадратные скобки вокруг вызовов методов, вы не увидите их очень часто.
Использование + или - перед объявлениями методов используется для различения методов класса (+) и экземпляра (-). Методы класса вызываются для самого класса (например, alloc), тогда как метод экземпляра вызывается для экземпляра этого объекта (такого как init).