如何在不公开的情况下访问类中的其他类成员(ivars)?

时间:2013-01-23 09:49:58

标签: iphone ios objective-c cocoa-touch nsobject

我写过以下目标c类..

@interface thumb_user_info : NSObject
{
@public // Otherwise I was not able to access in other class.
    NSString *user_name;
    int       user_id;
}
@end

当我在其他类中创建实例并尝试为user_id设置值时,它会显示错误“它受到保护”,如何访问这些ivars而不像上面那样公开它。我知道它在目标C中的基础知识,我不想犹豫不决。

注意:我已经通过综合尝试了......还是同样的错误......

感谢。

2 个答案:

答案 0 :(得分:3)

你要问的是OOP,面向对象编程的基础之一。

通过将私有属性设为私有来封装,绑定,隐藏您的私有属性。

如果您希望它们可见,请将其公开。

如果你知道它们被隐藏但是可以继承,你可以保护它们。

所以,无法从外部自我类中访问您的私人ivars /方法。

如果要访问私有ivars值,则创建一个公共方法并间接获取/返回该值。

合成为ivars(私有/受保护/公共)创建方法,如果它在.h中变为公共。

答案 1 :(得分:2)

它是实例var,而不是属性,因此您无法通过yourclass.user_name = userName为它们设置值,我认为您应该更好地添加一些方法来设置值,例如:

- (void)setupUserName:(NSString *)userName
{
    user_name = userName
}