Я большой поклонник генерации кода (из UML) и из мира Java. Мне интересно, как бы я внедрил автоматизированное двунаправленное управление ассоциациями в Objective-C.
Изображение партнера по ассоциации <-> Адрес, один-ко-многим и судоходный с обоих концов.Чего я хотел бы добиться, так это того, чтобы при добавлении адреса к партнеру этот объект адреса автоматически узнал о своем партнере.
Таким образом, для шаблона реализации было бы иметь NSMutableArray * на стороне партнера и партнера* на адресной стороне.Свойство на стороне адреса легко реализовать, так как setPartner: (Partner *) aPartner может автоматически вставлять Address (self) в NSMutableArray партнера, управляющего адресами.Другая сторона, однако, не так проста в реализации.Стандартным шаблоном реализации для многих ссылок в Objective-C, по-видимому, является NSMutableArray, который можно получить с помощью метода get @property.Объект, обладающий этим NSMutableArray, может затем вставить объект Address в массив, который, конечно, не будет обновлять другую сторону.
Я знаю, что, например, существуют другие шаблоны для такого типа управления ассоциациями., через методы addTo ... () и removeFrom ... ().Но я пока не знаю, будет ли это соответствовать другим принципам программирования Какао или даже мешать мне эффективно использовать Какао.Я думаю о Интерфейсном Разработчике здесь.Не очень много опыта, но я видел нечто, называемое ArrayController, которое кажется довольно удобным, но которое также, похоже, ожидает, что свойство типа NSMutableArray будет работать с.И если этот парень вставляет объекты в массив, мне нужно перехватить это и выполнить настройку с другой стороны.
Как программист на Java, я бы предпочел теперь создать подкласс NSMutableArray и переопределить некоторые из его методов, которые затем могли бы манипулировать другимиконец.Будет ли это вообще возможно?Я читал о категориях, но до сих пор я понял, что могу только добавлять методы к классу таким образом, не переопределяя их и не добавляя в структуру.Или это должен быть метод переадресации?Я в замешательстве прямо сейчас.Если бы вы могли указать мне правильное направление мышления, это было бы так здорово.Большое спасибо!