2011-11-21 68 views
0

怎麼會通過的方式被轉換爲從目標C目標C屬性以非託管C++

property (nonatomic, assign, getter = isCanceled) BOOL canceled; 

非託管C++ - isCanceled = FALSE;爲什麼不能以賴特

property (nonatomic, assign) BOOL canceled; 

如在與其他運營商的代碼另一部分:

property (nonatomic, retain) Im* img; 

並且這種結構是簡單的恆定在C + +?

屬性(非原子,只讀)參數* firstPar; 所以這是在C++東西像變量

const Parameter* firstPar; 

以及如何正確翻譯第一個和第二個屬性???

+0

我想我必須寫兩個單獨的功能 - 一個是getter和其他的二傳手,但我不知道1和2的區別並且我不確定3,購買它將會變得醜陋的方式 - 因爲我將實現兩個新名稱(用於getter和setter),其中目標c是一個(用於屬性) – curiousity

回答

0

這是第一個,在C++中它可能是這樣的:

class MyClass 
{ 
    bool m_cancelled; 

public: 
    bool isCancelled() 
    { 
     return m_cancelled; 
    } 

    void setCancelled(bool b) 
    { 
     m_cancelled = b; 
    } 
}; 

另外,我發現,實現存取方法大多數C++類通常使用getXyzsetXyz()命名約定,這是很大的不同典型的Objective-C慣例只有xyzsetXyz:,所以命名isCancelled()方法getCancelled()可能更有意義。

對於指針類型,它可能會變得棘手。沒有像Cocoa那樣的唯一內存所有權模型,所以很難完全翻譯屬性應該做什麼,但在C++中有這些漂亮的小東西,稱爲smart pointers。瞭解智能指針以及哪種類型的智能指針對其他數據/類類型有用。例如,您可能會發現boost::shared_ptr有用。

只讀在C++財產可能會是這個樣子:

class MyClass 
{ 
    int m_someProp; 

public: 
    int getSomeProp() 
    { 
     return m_someProp; 
    } 

    MyClass(int initialValue) : m_someProp(initialValue) 
    { 
     // m_someProp can still be altered anywhere within any method within 
     // MyClass, but users of MyClass will only have access to the value 
     // via getSomeProp() 
    } 
}