0
我正在使用Delphi XE3開發使用第三方動態庫(.dylib)進行工作的MAC OS X應用程序。如何將Objective C @property轉換爲Delphi XE3
目標庫有目標C頭文件,我試圖將其轉換爲Delphi。幾乎一切都很好,但有一個接口只包含@property聲明。
@interface ProductInitParams : NSObject
{
NSString* ProductKey;
NSString* ProductVendor;
NSString* ProductName;
NSString* ProductPackage;
}
@property (nonatomic, retain) NSString* ProductKey;
@property (nonatomic, retain) NSString* ProductVendor;
@property (nonatomic, retain) NSString* ProductName;
@property (nonatomic, retain) NSString* ProductPackage;
@end
我試着寫是這樣的:
ProductInitParams = interface(NSObject)['{149A7187-D3E1-4713-B2D1-6EA1801F4A7D}']
property ProductKey: NSString read ? write ?;
property ProductVendor: NSString read ? write ?;
property ProductName: NSString read ? write ?;
property ProductPackage: NSString read ? write ?;
end;
,但我不知道該怎麼讀\寫寫字。
有誰知道如何做到這一點?
P.S. 我看着馬卡皮。*單位 - 沒有關於編組屬性。
UPDATE
閱讀蘋果documentation約@property後,我想出了這個解決方案。
ProductInitParams = interface(NSObject)['{149A7187-D3E1-4713-B2D1-6EA1801F4A7D}']
procedure setProductKey(value: NSString); cdecl;
procedure setProductVendor(value: NSString); cdecl;
procedure setProductName(value: NSString); cdecl;
procedure setProductPackage(value: NSString); cdecl;
function ProductKey: NSString; cdecl;
function ProductVendor: NSString; cdecl;
function ProductName: NSString; cdecl;
function ProductPackage: NSString; cdecl;
property ProductKey_: NSString read ProductKey write setProductKey;
property ProductVendor_: NSString read ProductVendor write setProductVendor;
property ProductName_: NSString read ProductName write setProductName;
property ProductPackage_: NSString read ProductPackage write setProductPackage;
end;
我不知道它是否正確的解決方案,但它的工作原理。
如果有人對使用此解決方案時可能出現的問題有任何意見,請發帖。