Для следующего фрагмента кода из ViewController.m:Как добавить указатель на пользовательский подкласс NSObject в NSMutableArray?
- (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 (неатомический, сильный) associatedObject, который является указателем на объект типа NSObject.
• sourceOfObjects - это @property (неатомный, сильный) self типа 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.
WHAT ACTUALLY HAPPENS: Впоследствии запрашивается self.foo.arrayOfObjects.count возвращает 0. Я не верю, что это проблема с инициализацией arrayOfObjects, поскольку у меня есть ленивый экземпляр на месте.
Надеюсь, я сформулировал этот вопрос точно, постарался быть точным. :)
Что именно вы подразумеваете под «не работает»? Объясните (1), что вы ожидали, и (2) что на самом деле произошло. –
Отредактировано, спасибо. –
Добавить: 'NSLog (@" foo:% @ ", self.foo.arrayOfObjects);' и 'NSLog (@" sourceOfObjects:% @ ", self.sourceOfObjects.objectArray);' в начало метода для создания что это не ноль. Поскольку вы «не верите, что это проблема с инициализацией», почему бы нам не убедиться, так как это должно работать. :) – lnafziger