代码之家  ›  专栏  ›  技术社区  ›  Chris

编辑和iphone sdk框架?

  •  1
  • Chris  · 技术社区  · 14 年前

    我正在使用mapkit,希望能够向每个注释添加(nsstring*)itemtag值。我已经创建了myannotation.m和myannotation.h

    我试图将itemtag添加到myannotation.h/m中,但是当我试图访问主代码中的currentannotation.itemtag时,它显示“在协议中找不到itemid”-所以我转到mapkit.framework和mkannotation.h中,添加了(nsstring*)itemid,但是当我在框架中保存.h文件时,它会更改文件的图标,而不是显示为与其他任何东西jiving。

    任何帮助或帮助的链接将非常感谢。我甚至不确定我是否走上了正确的道路,但谷歌“修改iphone sdk框架”并没有出现太多。

    1 回复  |  直到 10 年前
        1
  •  4
  •   Jeff Kelley    14 年前

    你为什么要修改这个框架?你应该定义 itemID 作为 myAnnotation.h . 你说 currentAnnotation.itemTag 不起作用;要起作用,你必须 itemTag 定义为任何类的属性 currentAnnotation 属于。

    更改框架的头文件不会重新编译它,因此您将无法使其正常工作。

    编辑:举个例子。

    MyAnnotation.h :

    @interface MyAnnotation : NSObject <MKAnnotation> {
        NSString *itemID;
        // Other instance variables
    }
    
    @property (nonatomic, retain) NSString *itemID;
    
    // Class and instance methods.
    
    @end
    

    MyAnnotation.m :

    @implementation MyAnnotation
    
    @synthesize itemID;
    
    // Your code here.
    
    @end
    

    这个 @property 调用定义属性和 @synthesize 调用将为您创建setter和getter(用于设置和检索 项目 )在 我的注释.m ,您可以使用 self.itemID [self itemID] 得到的价值 项目 ,您可以使用 self.itemID = @"something" [self setItemID:@"Something"] 设置值。

    编辑2:

    当你得到 当前批注 ,如果编译器不知道注释是myannotation类的实例,则不会知道 项目 . 所以,首先要确保在 .m 文件:

    #import MyAnnotation.h
    

    这将确保编译器知道该类。当你使用 当前批注 ,您将其作为 MyAnnotation 像这样:

    (MyAnnotation*)currentAnnotation
    

    这应该会平息警告。