我尝试过以下示例代码:
#import "Foundation/Foundation.h" @interface example { @public NSString* name; } @end @implementation example @end int main() { example* me; me->name = @"World"; }
看来我的代码在这一点上讨厌我。我确实理解将一个字段公开是多么糟糕的想法,但我不知道为什么我在main()的最后一行收到错误。
答案 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";
}