2013-02-28 36 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方面至少)。