Собственность не соответствует протоколу - PullRequest
0 голосов
/ 09 декабря 2011

У меня проблемы с тем, чтобы моя собственность соответствовала моему самодельному протоколу, моя собственность объявлена ​​так:

    @property(assign)id <MainViewDatasource> datasource

И я запускаю этот код, чтобы проверить, соответствует ли он протоколу:

    if ([datasource conformsToProtocol:@protocol(MainViewDatasource)])
    NSLog(@"datasource conforms to MainViewDatasource");

    if(datasource == nil)
    NSLog(@"datasource is nil");

И в консоли говорится, что источник данных равен нулю.Как мне это исправить?

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Если вы не установите свойство источника данных, оно останется со значением по умолчанию, 0x0 (ноль).

0 голосов
/ 09 декабря 2011

Код: [datasource conformsToProtocol:@protocol(MainViewDatasource)] сам по себе возвращает логическое значение только после его выполнения. Как уже говорили другие, на самом деле он не устанавливает свойство источника данных. Если вы хотите выполнить настройку только в том случае, если указанное свойство соответствует протоколу, вы бы добавили что-то к этому блоку if:

if ([datasource conformsToProtocol:@protocol(MainViewDatasource)])
{    
    NSLog(@"datasource conforms to MainViewDatasource");
    // do additional set up code here that is needed, now that you know your datasource
    // conforms to the MainViewDatasource protocol.
}
if(datasource == nil)
NSLog(@"datasource is nil");
...