【发布时间】:2023-03-18 13:55:01
【问题描述】:
我有一个 AMContact 对象,其中一个强大的属性是一个 AMEmailAddress 对象数组。一个联系人可以有多个电子邮件地址。我可以在我的电子邮件地址对象上创建一个指向联系人对象的强属性吗?
我觉得如果它是一个强引用,可能会有一个保留周期。如果我让它变弱,当我进行查询以获取所有电子邮件地址对象时,在某些时候每个人的联系人对象都将变为 nil。
- (NSArray*)allEmailAddresses
{
NSArray *allContacts = [self allContacts];
NSMutableArray *emailAddresses = [NSMutableArray array];
for (AMContact *contact in allContacts) {
if (contact.emailAddresses) {
for (AMEmailAddress *address in contact.emailAddresses) {
[emailAddresses addObject:address];
}
}
}
if (emailAddresses.count > 0) {
return emailAddresses;
}
return nil;
}
@interface AMContact : NSObject
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
// arrays of AMEmailAddress, AMPhoneNumber objects
@property (nonatomic, strong) NSArray *emailAddresses;
@property (nonatomic, strong) NSArray *phoneNumbers;
@end
@interface AMEmailAddress : NSObject
@property (nonatomic, strong) NSString *label;
@property (nonatomic, strong) NSString *email;
@property (nonatomic, strong) AMContact *contact; // IS THIS OK OR A RETAIN CYCLE?
@end
【问题讨论】:
-
您说“在某些时候,每个联系人的联系人对象都变为零了”——这究竟是什么时候发生的?在您发布的部分代码中还是在其他方法中?
标签: ios objective-c automatic-ref-counting