属性不符合协议

时间:2011-12-09 18:32:08

标签: objective-c cocoa properties protocols

我遇到问题让我的财产符合我的自制协议我的财产被声明如下:

    @property(assign)id <MainViewDatasource> datasource

我运行此代码来测试它是否符合协议:

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

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

在控制台中它说数据源是零。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果您没有设置数据源属性,它将保持默认值0x0(无)。

答案 1 :(得分:0)

代码:[datasource conformsToProtocol:@protocol(MainViewDatasource)]本身只在执行后返回一个布尔值。正如其他人所说,它实际上并没有设置数据源属性。如果你只想在所述属性符合协议的情况下进行一些设置,你可以在块中添加一些内容:

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");