我有一个AMContact对象,其中其强大的特性之一是AMEmailAddress对象的数组。一个联系人可以有很多电子邮件地址我可以在指向联系人对象的电子邮件地址对象上创建一个强大的属性吗?儿童失去其弱引用父
我觉得,如果它很强的借鉴意义有可能是一个保留周期。如果我使它变弱,当我执行查询以获取所有电子邮件地址对象时,在某一时刻,每个电子邮件地址对象的联系对象正在变为零。
- (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
你说过“某一时刻每个人的联系对象正在变为零” - 这种情况到底发生在什么时候?在您发布的代码或使用其他方法的部分代码中? –