В книге(Аарон Хилегасс) написано, что можно использовать оба способа, т.е:
родной [OBJ method:args]
равнозначен OBJ.method(args)
но использовать лучше сообщения и это тоже не ясно.
Квадратные скобки - это вызов метода/отправка сообщения.
Через точку - это обращение к property. У property обязательно есть getter и setter, и название метода getter по умолчанию совпадает с названием property, поэтому такая конструкция работает.
Идеологически конечно лучше не вызывать методы через obj.method, чтобы не вносить путаницу. Методы нужно вызывать [obj method], а к property обращаться obj.propertyName