所以我是 Objective-C 的新手,我正在关注本教程。我正在运行 Linux Mint 14。我已经通过运行安装了 gobjc,sudo apt-get install gobjc
并且我也已经安装了 gcc。我正在尝试他们的Point
示例,但遇到了一些奇怪的错误。
这是我的代码(几乎从网站复制和粘贴):
#import <objc/Object.h>
#import <math.h>
#import <stdio.h>
@interface Point : Object
{
@private
double x;
double y;
}
- (id) x: (double) x_value;
- (double) x;
- (id) y: (double) y_value;
- (double) y;
- (double) magnitude;
@end
@implementation Point
- (id) x: (double) x_value
{
x = x_value;
return self;
}
- (double) x
{
return x;
}
- (id) y: (double) y_value
{
y = y_value;
return self;
}
- (double) y
{
return y;
}
- (double) magnitude
{
return sqrt(x*x+y*y);
}
@end
int main(void)
{
Point *point = [Point new];
[point x:10.0];
[point y:12.0];
printf("The distance from the point (%g, %g) to the origin is %g.\n",
[point x], [point y], [point magnitude]);
return 0;
}
我正在使用gcc Point.m -lobjc -lm
.
这是我得到的错误:
Point.m: In function ‘main’:
Point.m:52:4: warning: ‘Point’ may not respond to ‘+new’ [enabled by default]
Point.m:52:4: warning: (Messages without a matching method signature [enabled by default]
Point.m:52:4: warning: will be assumed to return ‘id’ and accept [enabled by default]
Point.m:52:4: warning: ‘...’ as arguments.) [enabled by default]
它似乎无法找到“新”方法(或者可能是 alloc/init?)。
我已经查找了很多关于这个问题的信息,但我找不到太多。一切都建议切换到较新的 GNUStep 和NSObject
,但我正在为我的一个 CS 课程编写程序,我认为我必须坚持使用objc/Object.h
.
今年年初,我们获得了一个预配置的 Ubuntu 映像,可以在 VirtualBox 中使用,我们可以在该映像上进行编程,并且该程序可以正常工作。我不确定那里有什么使它起作用。会不会是 Linux Mint 14 不支持这个旧版本的 Objective-C?
任何帮助/反馈表示赞赏!