簡體   English   中英

如何將Objective C @property轉換為Delphi XE3

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM