2013-02-28 38 views
1

当你抽象类来自一个Java背景, 和有人使用它们,并与他们的价值观乘坐它们:在目标C ... 你怎么做一个静态库中的抽象类可供某人打开并重写?谢谢如何调用抽象方法从一个客观的C库

编辑:更具体地说,他们如何在他们的方法中实现该方法,并将这些值用于自己(s)?如果这是很容易一次抱歉,从java IM backgrund

+0

[在Objective C中创建一个抽象类]的可能的重复(http://stackoverflow.com/questions/1034373/creating-an-abstract-class-in-objective-c) – dasblinkenlight 2013-02-28 15:25:48

+0

Objective-C更加动态因为理论上的方法可以在运行时添加到类中,所以正式的抽象类没什么意义。可可和Java并没有很好地混合,事实上,由于两种语言和框架之间的哲学差异太大,Apple放弃了最初的Cocoa-Java实现。 – Monolo 2013-02-28 15:33:46

回答

1

其它语言不同,Objective-C中没有语法标记类作为抽象的,也不会阻止您创建一个抽象类的实例。

在文档中简单地说它打算被分类并且不用于这样。

1

可可不提供任何称为抽象。我们可以创建一个只在运行时获取检查的类抽象,编译时不检查。

这里只是一个尝试:

@interface AbstractClass : NSObject 
@end 

@implementation AbstractClass 
+ (id)alloc{ 
    if (self == [AbstractClass class]) { 
     NSLog(@"Abstract Class cant be used"); 
    } 
    return [super alloc]; 
@end 

注:这是不是编译器检查。

+0

我明白了,但是库中的某个人怎么实现这个 – 2013-02-28 15:41:01

+0

首先,这有助于仅在运行时为你提供一个抽象类,而不是在编译时,即使你将一个对象变为可能。那么这有什么好处? **如果你真的想要一个抽象类,它更好地改变你的设计。** – 2013-02-28 15:43:18

1

来自Java背景我自己,当我第一次开始使用Objective-C时,我一直在寻找同样的东西。我发现这个回答我的问题:

Creating an abstract class in Objective-C

简短的回答,有在Objective-C没有抽象类(在Java方面至少)。