Краткий ответ: нет разумного способа сделать это. А поиск неразумного способа сделать это создаст больше проблем, чем решит. Я понимаю, что это не тот ответ, который вам нужен, но в интересах любого, кто будет читать этот вопрос в будущем, я объясню, почему я считаю, что вы не должны этого делать.
Свойство view является частью открытого интерфейса UIViewController, а тип возвращаемого значения является частью этого интерфейса. Изменение открытого интерфейса класса, который вы вложили в подкласс, вонючий. Если вам этого недостаточно, подумайте, что свойство view контроллера представления является фундаментальным элементом UIKit; Есть несколько вещей, с которыми вы могли бы связываться, которые потенциально могли бы иметь более системный эффект на платформе. Кто знает, что за темные махинации лежат под фасадом этого простого интерфейсного геттера? Основываясь на некоторых комментариях, уже оставленных здесь, кажется, что переопределение этого свойства ломает вещи очевидным образом; Я бы держался подальше.
Если вы работаете с таким языком, как ruby, тот факт, что вы не можете отправить произвольное сообщение объекту, возвращаемому свойством view без предупреждения компилятора, может показаться неудовлетворительным. Однако, к лучшему или к худшему, Objective C - это статически (если не особенно сильно) типизированный язык. Когда вы работаете с конкретным инструментом, стоит попытаться использовать его сильные стороны и избегать его слабостей, а не пытаться использовать его в идиомах другого инструмента.
Если, с другой стороны, вы пришли из строго типизированного языка, такого как C ++, то приведение также должно быть крайне неудовлетворительным. Приведения приводят к разрушению системы типов, на которую опираются статически типизированные языки, и почти всегда имеют неприятный запах кода. Слепки в стиле C являются ядерным оружием системы типов C; они перекрывают абсолютно все, и их почти всегда нельзя использовать.
Что если в будущем вы решите добавить метку к своему представлению наряду с веб-представлением? В этом случае вам нужно переместить веб-представление в подпредставление; но если вы повсеместно преобразуете базовое представление контроллера представления в UIWebView, то ваши приведения теперь ложные. К сожалению, компилятор не поможет вам найти эту ложь, потому что приведения в стиле C не проверяются; вы можете сделать UIWebView из UIView, типа int, блока, указателя функции или носорога, и компилятор не будет пискать. Тем не менее, ваше приложение будет сильно зависать.
Наконец, вы говорите, что хотите избежать сложности. Учтите, что добавление веб-представления в качестве подпредставления базового представления потребует только того, чтобы вы объявили (и синтезировали) одно свойство и добавили подпредставление в viewDidLoad. Учитывая это небольшое усилие, все вызовы в вашем веб-представлении выглядят так:
[self.webView loadHTMLString:HTMLString baseURL:baseURL];
С другой стороны, если вы продолжаете кастинг, каждый вызов вашего веб-представления будет выглядеть следующим образом:
[(UIWebView *)self.view loadHTMLString:HTMLString baseURL:baseURL];
Первое кажется мне менее сложным и менее хрупким.