访问Objective C中的公共字段

时间:2012-05-23 15:19:28

标签: objective-c field public

我尝试过以下示例代码:

    #import "Foundation/Foundation.h"

    @interface example
    {
        @public NSString* name;
    }
    @end

    @implementation example @end

    int main()
    {
        example* me;
        me->name = @"World";
    }

看来我的代码在这一点上讨厌我。我确实理解将一个字段公开是多么糟糕的想法,但我不知道为什么我在main()的最后一行收到错误。

3 个答案:

答案 0 :(得分:5)

这里有很多错误

您的类应该是NSObject的子类,因此它应该声明为

@interface example : NSObject
{
    @public NSString* name;
}

@end

接下来,你实际上需要一个类的实例来获取它的值,例如

example *me = [[example alloc] init];
NSLog(@"%@", me->name);

下一个类以大写字母开头,通常有一个前缀,例如我会用

PSExample

接下来请不要像这样访问实例变量,你应该通过访问器使对象状态可用,而不是直接访问。

答案 1 :(得分:2)

您没有分配或初始化me变量。您可能希望继承NSObject,然后使用它:

example *me = [[example alloc] init]

至少你需要alloc它。

答案 2 :(得分:2)

您需要先初始化变量,然后才能访问它。您还应该从NSObject派生您的课程。

#import "Foundation/Foundation.h"

@interface example : NSObject
{
    @public NSString* name;
}
@end

@implementation example @end

int main()
{
    example* me = [[example alloc] init];
    me->name = @"World";
}