我写过以下目标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中的基础知识,我不想犹豫不决。
注意:我已经通过综合尝试了......还是同样的错误......
感谢。
答案 0 :(得分:3)
你要问的是OOP,面向对象编程的基础之一。
通过将私有属性设为私有来封装,绑定,隐藏您的私有属性。
如果您希望它们可见,请将其公开。
如果你知道它们被隐藏但是可以继承,你可以保护它们。
所以,无法从外部自我类中访问您的私人ivars /方法。
如果要访问私有ivars值,则创建一个公共方法并间接获取/返回该值。
合成为ivars(私有/受保护/公共)创建方法,如果它在.h中变为公共。
答案 1 :(得分:2)
它是实例var,而不是属性,因此您无法通过yourclass.user_name = userName
为它们设置值,我认为您应该更好地添加一些方法来设置值,例如:
- (void)setupUserName:(NSString *)userName
{
user_name = userName
}