Использование obj
- это то, на что это похоже: прямой доступ к переменной.
Однако self.obj
- это , а не , как это выглядит. Вместо этого это контекстно-зависимый синтаксический сахар для вызова метода доступа. По соглашению, метод установки будет setObj:
, а метод получения obj
, хотя это можно переопределить. Поэтому обычно self.obj
эквивалентен либо [self obj]
, либо [self setObj:x]
в зависимости от того, читаете ли вы значение или присваиваете ему значение.
В вашем примере, когда вы ставите [self.view method]
, вы действительно делаете [[self view] method]
. Не зная больше о контексте, в котором вы используете это, трудно сказать, почему он дает вам бесконечный цикл, хотя один очевидный случай, который бы это сделал, это если бы вы делали этот вызов внутри метода доступа метод для view
.