[英]How to convert Objective C @property to Delphi XE3
我正在使用Delphi XE3開發用於MAC OS X的應用程序,該應用程序使用第三方動態庫(.dylib)進行工作。
目標庫具有我要轉換為Delphi的Objective C頭文件。 幾乎一切都很好,但是有一個接口僅包含@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;
但我不知道該為讀\\寫寫什么。
有人知道怎么做這個嗎?
PS:我以Macapi。*單位查看-編組屬性沒有任何關系。
更新
閱讀有關@property的Apple 文檔后 ,我想到了此解決方案。
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;
我不知道這是否是正確的解決方案,但是可以。
如果有人對使用此解決方案時可能出現的問題有任何意見,請發表。
在Delphi中,它應該看起來像這樣。 屬性映射到具有屬性名稱的函數。 設置器映射到以屬性類型為參數的過程集。
ProductInitParams = interface(NSObject)['{149A7187-D3E1-4713-B2D1-6EA1801F4A7D}']
function ProductKey : NSString; cdecl;
procedure setProductKey(value : NSString); cdecl;
function ProductVendor : NSString; cdecl;
procedure setProductVendor(value : NSString); cdecl;
end;
也許此鏈接還可以幫助您從Objective C類進行XE4(Firemonkey + iOS靜態庫),Pascal轉換?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.