所以我按如下方式创建了一个类X:
@interface X : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString * title;
NSString * subtitle;
UIImage * image;
NSInteger * tag;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * subtitle;
@property (nonatomic, retain) UIImage * image;
@property (nonatomic, readwrite) NSInteger * tag;
@end
内部:
我希望能够访问X拥有的标记属性。这怎么可能? 我能做[控制标签]吗?这假设是如何工作的?
答案 0 :(得分:1)
对于第二部分,警告的原因是您将纯整数分配给NSInteger指针。 NSInteger
的类型为int
或long
所以你正在做(错误地):
NSInteger * tag = 2;
修改强>
这是你可以使用NSInteger的方法:
NSInteger myi = 42;
NSLog(@"int: %d", myi);
NSInteger * i = &myi; // i is a pointer to integer here
*i = 43; // dereference the pointer to change
// the value at that address in memory
NSLog(@"int: %d", myi);
鉴于上述情况,您正在尝试:
NSInteger * i = &myi;
i = 2; // INCORRECT: i is an pointer to integer
将tag
声明为NSInteger
而不是NSInteger*
并在属性中使用assign
(我会给你一些确切的代码,但我在linux atm ...)
END OF EDIT
对于第一部分,我不确定X
的对象是如何传递给您的方法的,但如果[yourobject tag]
方法是tag
,那么您应该能够X
该方法用于从对象MKAnnotation
获取数据的接口的一部分。
我的意思是tag
协议没有X *anX = (X*)self.annotation;
属性,因此您必须将对象类型转换为您的对象类型,例如annotation
,或[anX tag]
对象来自的任何地方,您应该能够访问代码X
- 如果这是您的regionDidChangeAnimated
对象
我发现了example code in Apple docs that uses custom annotation。
在示例中,注释在视图上设置。
绘制视图时,它使用来自实现注释协议的对象的数据。在访问值之前,将对象类型化为实际对象(请参阅视图的绘制方法)。
您可以在控制器中看到视图中{{1}}中新注释的设置方式。