Для следующего фрагмента кода из ViewController.m:
- (IBAction)buttonAction:(id)sender
{
CustomButton *button = (CustomButton *)sender;
button.associatedObject = [self.sourceOfObjects.objectArray lastObject];
[self.foo.arrayOfObjects addObject:button.associatedObject]; // this does not work?
}
• CustomButton является подклассом UIButton и имеет связанный объект @property (неатомарный, сильный), который является указателем на объект типа NSObject.
• sourceOfObjects - это @property (неатомарное, сильное) самого себя типа MyCustomObject, подкласс NSObject.
• objectArray - это @property (неатомарный, сильный) sourceOfObjects типа NSMutableArray.
• foo - это @property (неатомарный, сильный) ViewController типа MyCustomObject, подкласса NSObject.
• arrayOfObjects - это @property (неатомарный, сильный) объекта foo типа NSMutableArray.
ВОПРОС: Есть идеи, почему я не могу добавить указатель из button.associatedObject в self.foo.arrayOfObjects, чтобы у меня был указатель в self.foo.arrayOfObjects, который указывает на тот же объект, что и button.associatedObject?
ЧТО Я ОЖИДАЮ, ЧТО ПРОИЗОЙТИ: Если я впоследствии запрошу [self.foo.arrayOfObjects lastObject], он должен вернуть объект, на который также указывает button.associatedObject.
ЧТО ДЕЙСТВИТЕЛЬНО ПРОИСХОДИТ: при последующем запросе self.foo.arrayOfObjects.count возвращается 0. Я не верю, что это проблема с инициализацией arrayOfObjects, поскольку у меня есть ленивое создание экземпляров.
Надеюсь, я правильно сформулировал этот вопрос, постарался уточнить. :)
NSLog(@"foo: %@", self.foo.arrayOfObjects);
иNSLog(@"sourceOfObjects: %@", self.sourceOfObjects.objectArray);
в начало метода, чтобы убедиться, что он не равен нулю. Поскольку вы не верите, что это проблема инициализации, почему бы нам не убедиться, ведь это должно работать. :) - person lnafziger   schedule 06.05.2012self.foo.arrayOfObjects
не инициализируется должным образом, аself.sourceOfObjects.arrayOfObjects
в порядке. - person Ken M. Haggerty   schedule 06.05.2012