У меня есть объект 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
Вы сказали, что «в какой-то момент контактный объект для каждого становится ничем» - когда именно это происходит? В части кода, который вы опубликовали или в другом методе? –