找不到使用关联对象的协议错误

问题描述

| 我在数组中保存了一堆
MKpolygon
,但是我想保存比MKpolygon类存储的数据更多的数据(更具体地说:描述该多边形是什么的备注字段)。出于某些原因,无法进行子类化,因此我发现关联对象功能就我的目的而言已经足够好了。这是我的.m的样子:
@implementation MKpolygon (ExtraProperties)

static char notesKey;

- (void)setNotes:(Nsstring *)notes {

    objc_setAssociatedobject(self,&notesKey,notes,1);
}

- (Nsstring *)notes {

    return objc_getAssociatedobject(self,&notesKey);
}
我的.h只是声明了此类别的属性
@interface MKpolygon (ExtraProperties)
@property (nonatomic,retain) Nsstring *notes;
@end
设置notes属性效果很好,没有错误,并且似乎可以存储该变量。另一方面,获得它是可行的,但是给我一个警告,即在该协议中找不到-notes。重要的是要让您知道叠加层也已添加为注释,并且在我的
mapView:viewForAnnotation:
方法中我收到此“-在协议中找不到的注释”错误,为此,第二个参数是符合条件的
id
符合“ 5”协议。 现在,我了解到它说
MKAnnotation
协议没有实现-notes方法,但我从未声称它实现了。我已经使用两个额外的方法(getter / setter)创建了一个类别,因此,如果我对类别的理解是正确的,那么-notes现在被认为是MKpolygon的一种方法,对吗?那为什么编译器会给我这个警告呢? 还值得注意的是:调用方法确实有效:我得到正确的结果,但是我不喜欢在代码中包含警告。     

解决方法

        由于这是MKAnnotation错误,请尝试在您的ID中插入它。
id<MKAnnotation,NSObject> delegate;
\“ MKAnnotation \”可能是错误的输入,您必须在xcode库中查找它,但这是我的最佳猜测...如果运气好的话,如果运气不好的话/:哈哈