我正在尝试访问 Objective-C 类中的结构。但我是 不成功。任何人都可以解释如何调整这个类 使其编译并访问成员变量?
#import <Foundation/Foundation.h>
enum ACCOUNT_TYPE {
SAVINGS,
LOAN,
FIXED_DEPOSIT
};
struct SavingsData {
NSMutableString* accountName;
NSMutableString* accountType;
NSMutableString* balance;
NSMutableString* currency;
};
struct LoanData {
NSMutableString* accountName;
NSMutableString* balance;
};
struct FixedDepositData {
NSMutableString* accountName;
NSMutableString* depositAmount;
NSMutableString* roi;
};
union AccountData {
struct SavingsData *savingsData;
struct LoanData *loanData;
struct FixedDepositData *fixedDepositData;
};
@interface Account : NSObject {
NSMutableString* accountId;
enum ACCOUNT_TYPE type;
union AccountData *accountData;
}
@property (nonatomic, assign) NSMutableString* accountId;
@property (nonatomic, assign) enum ACCOUNT_TYPE type;
@property (nonatomic, assign) union AccountData *accountData;
最佳答案
你应该让它静态
@interface Account : NSObject {
union AccountData accountData;
}
@property (nonatomic, assign) union AccountData accountData;
否则您将需要在 init 中动态创建它(或将其设置为 NULL)。此外,您还需要确保结构中的所有这些 NSMutableString 指针都正确初始化为 nil 或其他。另外,您应该小心这里的内存管理,因为当您传递字符串时,字符串不会被保留(您可以覆盖结构的 setter/getter 来相应地保留/释放 NSMutableString)。
关于iphone - 如何在objectiveC类中使用struct和union?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323479/