1

我写了以下目标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 中的基础知识,我不想犹豫让自己清楚。

注意:我也尝试过合成它......仍然是同样的错误......

谢谢。

4

2 回答 2

3

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

您通过将其设为私有来封装、绑定、隐藏您的私有财产。

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

如果您希望它们被隐藏但可继承,则可以对其进行保护。

因此,无法从外部自我课程访问您的私人 ivars/方法。

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

synthesize 为 ivars (private/protected/public) 创建方法,如果它在 .h 中,它将变为 public。

于 2013-01-23T09:54:12.183 回答
2

它是实例变量,而不是属性,所以你不能为它们设置值yourclass.user_name = userName,我认为你最好添加一些方法来设置值,例如:

- (void)setupUserName:(NSString *)userName
{
    user_name = userName
}
于 2013-01-23T10:01:46.053 回答