2017-02-20 40 views
2

我想要在包含名稱&電子郵件ID的目標C++中創建Model類。 像我們做什麼斯威夫特3前: -如何在Objective C++中創建Model類?

import UIKit 

class modelDemo: NSObject { 

    var name : String = "" 
    var emailId : String = "" 
} 

&我們像前訪問modelDemo: -

let modelVar : [modelDemo] = [] 
    // after inserting values in Model 
    print("first object is \(modelvar[0].name)") 

我們可以實現的目標C同樣的事情++?

+2

使用Objective-C++,您可以選擇創建Objective-C類或C++類。你想創建哪一個? – Sulthan

+0

帶.mm擴展名的目標C++類 – Jack

+3

沒有Obj-C++類。 Obj-C++是Obj-C和C++的組合。您可以創建一個Obj-C類或一個C++類。但是,C++類不能從NSObject繼承。 – Sulthan

回答

-1
@interface ModelDemo: NSObject 
@property (noatomic, copy) NSString* name; 
@property (noatomic, copy) NSString* emailId; 
@end 

@implementation ModelDemo 
@end 

...

ModelDemo* model = [ModelDemo new]; 
model.name = "Hello" 
NSArray<ModelDemo*> *array = @[model]; 
NSLog(@"Name: %@",array[0].name); 
0

你的問題很清楚,但我想可能有一個想法。你問是否可以創建一個C++類,它是ObjC類的子類?

Swift不是C++,儘管源代碼中的Swift類看起來與C++類非常相似,但它更類似於內部的ObjC類。這就是爲什麼你可以創建一個Swift類,它是ObjC類的一個子類。

雖然這不適用於C++。你可以用ObjC++做的所有事情都是創建一個ObjC類,它包含一個C++類作爲它的一個實例變量,或者一個包含一個ObjC類的C++類。如果你這樣做,你可以編寫對消息有反應的代碼並將其轉發給C++類等,但是無法使用C++或其他方法繼承ObjC類。

此外,您應該瞭解文件和類之間的區別。一個文件可以包含0個或更多的類。一個ObjC文件可以包含ObjC類,一個C++文件可以包含C++類。 ObjC++文件可以包含ObjC類和/或C++類。

你必須選擇你所需要的。你在用什麼,爲什麼?沒有像ObjC++類那樣的東西。你爲什麼要使用ObjC++?爲什麼不單單使用ObjC或C++?幫助我們理解在具體案例中需求背後的原因,我們可以給你有用的答案。