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