Все зависит от того, как определяется obj
.Если это id obj
, то приведение не требуется, но если оно было определено как NSObject *obj
приведение является необходимым для подавления предупреждения компилятора о том, что stringByAppendingString:
не определено в NSObject
.Приведение не требуется для того, чтобы код работал во время выполнения, он только сообщает компилятору «правильный» тип, чтобы он мог определить, должен ли метод существовать в объекте.
Причина, по которой приведение не выполняетсядля id
необходимо, потому что id
означает «объект любого типа» , а NSObject *
означает «объект типа NSObject» .