C文件可以從.c
到.m
文件被修改,並且可以是從其他目標C文件(.m
文件)調用。目標C與目標C++
C++文件可以從.cpp
到.mm
文件被修改,並且可以從其他目標C++文件(.mm
文件)被調用。
.m
文件可以從.mm
文件被稱爲。但.mm
文件不能從.m
文件調用。
是目標C++在iPhone開發編碼必要爲UI將在目標C和實施的任何其他協議不能客觀C++,因爲這(書面協議)將從UI叫這寫成目標C。
在什麼方案是這樣的Objective C++編碼使用?
C文件可以從.c
到.m
文件被修改,並且可以是從其他目標C文件(.m
文件)調用。目標C與目標C++
C++文件可以從.cpp
到.mm
文件被修改,並且可以從其他目標C++文件(.mm
文件)被調用。
.m
文件可以從.mm
文件被稱爲。但.mm
文件不能從.m
文件調用。
是目標C++在iPhone開發編碼必要爲UI將在目標C和實施的任何其他協議不能客觀C++,因爲這(書面協議)將從UI叫這寫成目標C。
在什麼方案是這樣的Objective C++編碼使用?
.m文件可以從.mm文件中調用。但.mm文件不能從.m文件中調用。
不知道你是什麼意思,但我認爲這是錯誤的。
Objective-C(++)的「Objective」部分在兩種語言中都是相同的。不管實現是Objective-C還是Objective-C++,對象都是完全可互操作的。
重要的是聲明接口的頭文件。例如:
@interface Foo
{
CPPFoo myFoo; // A C++ object
}
@end
可以不包括在正常的Objective-C的.m
文件,因爲C++類的C.是非法的來解決這個問題的方法之一是使用前置聲明和指針如
#if defined __cplusplus
class CPPFoo;
#else
typedef struct CPPFoo CPPFoo;
#endif
@interface Foo
{
CPPFoo *myFoo; // NOTE: a pointer to a C++ object
}
@end
你需要新的-init
指針和-dealloc/-finalize
刪除它
號以前我覺得目的C++在iPhone開發的編碼需要(來自C++背景),最好只在UI中使用C++和Objective-C。然而,我沒有多久意識到Objective-C的對象模型比C++更好。所以現在我會在只有兩種情況考慮C++:
接口來寫在C++Objective-C++用於任何時候想要混合Objective-C代碼和C++代碼。
您聲明「.mm文件不能從.m文件中調用」不正確。如果您將C++ 放在標頭中,那麼您無法從純粹的Objective-C文件調用它,但對於具有使用C++的實現的類,您可以擁有純粹的Objective-C接口。一個常見的例子是將現有的C++類(也許是一些現有的庫)封裝爲Objective-C類。
請注意星號('* ... *'或'** ... **')而不是反引號('\'... \'')。後者用於格式化內聯代碼。 – kennytm 2011-05-07 11:57:19
@KennyTM:謝謝你告訴我如何進行格式化,我的下一個格式化就是這樣做的。 – spandana 2011-05-07 12:07:55