我正在使用 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;
我不知道这是否是正确的解决方案,但它有效。
如果有人对使用此解决方案时可能出现的问题有任何意见,请发表。