Определение и использование протоколов в цели-c

Используйте стиль с установщиком, нацеленным на DataGridColumnHeader:

<DataGrid>
    <DataGrid.Resources>
        <Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Background" Value="Blue" />
        </Style>
    </DataGrid.Resources>
</DataGrid>
22
задан Jay 21 February 2014 в 22:11
поделиться

2 ответа

Вы на правильном пути, но вас зацикливает компилятор C, что немного архаично. Компилятор задыхается, потому что определение протокола недоступно в то время, когда вы его используете. @protocol DragDropImageViewDelegate должен быть определен, прежде чем вы сможете использовать id в качестве типа. Вы можете переместить определение @protocol перед использованием (т.е. перед вашим @interface) или добавить

@protocol DragDropImageViewDelegate;

перед @interface (прямое объявление) и оставить объявление @protocol на месте.

31
ответ дан 29 November 2019 в 04:44
поделиться

Как правило, я сначала определяю протокол, которому предшествует

@class DragDropImageView;

. Но вы можете сделать обратное, и перед ним:

@protocol DragDropImageViewDelegate;

На мой взгляд, протокол является важной частью объявления и обычно бывает довольно коротким, поэтому я предпочитаю, чтобы он шел первым, а не терялся в нижней части файла заголовка, но это вопрос вкуса.

10
ответ дан 29 November 2019 в 04:44
поделиться