需要在Objective C中声明一个公共实例变量

eas*_*ees 7 visibility public objective-c ivar

我正在尝试为Objective C(适用于iOS)中的自定义按钮类声明一些实例变量:

@interface PatientIDButton : UIButton {
    NSUInteger patientID;
    NSString * patientName;
}
@end
Run Code Online (Sandbox Code Playgroud)

但是,这些现在是私有的,我需要其他类可以访问它们.我想我可以为它们制作访问器功能,但是如何将变量本身公开呢?

das*_*ght 14

要使实例变量公开,请使用@public关键字,如下所示:

@interface PatientIDButton : UIButton {
    // we need 'class' level variables
    @public NSUInteger patientID;
}
@end
Run Code Online (Sandbox Code Playgroud)

当然,您需要记住为公共访问公开"原始"变量的所有标准预防措施:您最好使用属性,因为您可以保留在以后更改其实现的灵活性.

最后,您需要记住访问公共变量需要取消引用 - 使用星号或->运算符:

PatientIDButton *btn = ...
btn->patientID = 123; // dot '.' is not going to work here.
Run Code Online (Sandbox Code Playgroud)

  • @bbum为什么,应该使用`(*btn).patientID`代替? (3认同)