【发布时间】:2012-01-21 15:17:15
【问题描述】:
鉴于此:
Person.h:
@interface Person
{
}
- (void) sayHello;
@end
Person.m:
#import "Person.h"
@implementation Person
- (void)sayHello
{
printf("%s", "Steve");
}
@end
如何实例化 Person?我试过这个:
Person *p = [Person new];
这样不行,这样也行:
Person *p = [Person alloc];
[更新]
我忘了说,我已经尝试过从 NSObject 继承,new 和 alloc 都可以。我只是好奇我们是否可以实例化一个不继承自 NSObject 的类?
【问题讨论】:
-
Person继承自NSObject有什么问题? -
+1 因为这是一个非常有趣的问题,虽然实用价值可能很少。
-
@Costique:没什么,只是我在网上找到的很多教程都没有提到这是一个要求(即从 NSObject 继承)。示例:en.wikibooks.org/wiki/Objective-C_Programming/syntax 尝试从 Object 继承,但
[Person new]也不起作用 -
@Hao 大多数教程可能都没有提到它,因为它是一种从超类继承的面向对象编程中的给定,而根类通常称为 Object 或类似的东西。教程的作者往往会忘记,并不是每个人都知道这个事实,因为它是如此基本的东西。请阅读(并接受)乔希的回答,它应该彻底回答您的问题。如果您仍有任何问题,请随时发表评论。
标签: objective-c class instantiation