Анонимная реализация делегата в Objective C?

Я не считаю хорошей идеей запускать код Python из NodeJS. Если вы по какой-либо причине вынуждены это сделать, вам, вероятно, необходимо вызвать скрипт Python в дочернем процессе (см., Например, , эту статью ).

В качестве альтернативы, вы можете использовать что-то вроде Scrapyrt , которое предоставляет HTTP API для вашего проекта Scrapy и предоставляет возможность скребка по требованию.

Тем не менее, наилучшим вариантом, по-видимому, является использование некоторого нативного решения для очистки JavaScript, такого как Apify .

24
задан rustyshelf 20 April 2009 в 00:18
поделиться

3 ответа

В настоящее время нет способа сделать это в Objective-C. Apple опубликовала некоторые работы, посвященные их усилиям по добавлению в язык блоков (действительно больше похожих на лямбда-замыкания, чем анонимные классы). С ними вы, вероятно, сможете сделать что-то похожее на анонимный делегат.

В то же время большинство программистов Какао добавляют методы делегата в отдельную категорию в классе делегата. Это помогает сохранить код более организованным. В файле .m для класса в вашем примере я сделал бы что-то вроде этого:

@interface MyClass (UIActionSheetDelegate)
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex;
@end

@implementation MyClass
//... normal stuff here
@end

@implementation MyClass (UIActionSheetDelegate)
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0){
        [[Settings sharedSettings] removeItemAtIndex:/*need index variable here*/];
        [drinksTable reloadData];
    }
}
@end

Всплывающее окно метода Xcode в окне редактора отделит объявление и реализацию категории от основного класса ».

17
ответ дан 29 November 2019 в 00:15
поделиться

Objective-C не имеет понятия анонимных классов, таких как Java, поэтому вы не можете создать класс " встроенный ", как в коде Java.

4
ответ дан 29 November 2019 в 00:15
поделиться

Я считаю, что анонимные классы могут быть реализованы в Objective-C, но потребуется много NSProxy магии и IMP безумия. Это один из моих текущих проектов.

1
ответ дан 29 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: