В объекте действительно есть что-то, чего я не могу понять.Я знаю, как создавать сохраняемые свойства, но не могу понять, как сделать сохраняемые «подструктурные» поля, которые не являются «общедоступными» свойствами, а только «частными» свойствами (частные свойства управляются только моими методами).
Вот мой код:
struct _device_descriptor {
NSInteger accessoryNumber; // Accessory the device belongs to
NSInteger slotNumber; // Slot number used for the device
NSString* slotName; // Slot name
};
typedef struct _device_descriptor device_descriptor_t;
#define NUMBER_MAX_CARD_READERS 10
#define NUMBER_MAX_ACCESSORIES 10
@interface CardDeviceManager : NSObject {
// Card devices (among accessories)
NSInteger m_numberOfCardDevices; // Number of devices.
NSMutableArray* m_accessoryList; // List of all accessories
@private
// Accessories
NSInteger m_numberOfAccessories; // Number of accessories
NSInteger m_numberOfAcceptedAccessories;
device_descriptor_t m_cardDevice[NUMBER_MAX_CARD_READERS]; // Array of card devices.
}
Я хочу, чтобы имя слота (slotName в структуре) сохранялось каждый раз, когда я назначал его в моих методах, но это не свойство, так как не видно снаружи.
Например, каждый раз, когда я инициализирую его с помощью другой строки NSString, я делаю это:
//_tmpName is a NSString
// Warning: slotName must be released later since we retain it.
m_cardDevice[i].slotName = [[NSString stringWithString: _tmpName] retain];
Я действительно чувствую, что это не «хороший» (не элегантный) способ выполнения.
Я думаю, мне следует удалить структуру _device_descriptor и получить что-то вроде этого:
NSInteger accessoryNumber[NUMBER_MAX_CARD_READERS]; // Accessory the device belongs to
NSInteger slotNumber[NUMBER_MAX_CARD_READERS]; // Slot number used for the device
NSString* slotName[NUMBER_MAX_CARD_READERS];
Но это не лучше, так как я не собираю общие вещи в структуре ...
Есть ли более умный путь?
С уважением, Франц