Терминология Objective C: выходы и делегаты

У меня есть проблемы, понимая понятие выходов, как iPhone имеет дело с событиями.На помощь! Делегаты смущают меня также. Кто-то хотел бы объяснить?

8
задан Moshe 7 November 2010 в 06:38
поделиться

2 ответа

Чтобы запросить пользователей, которые нужно удалить, сделать:

VAR Delusers = от U в db.maillistusers где! userkeys.contains (u.userkey) Выберите U;

db.maillistusers.deleteallonsubmit (delusers);

Я не уверен, что лучший способ сделать новые записи. Вы могли бы сделать это, но я не уверен, что это наиболее эффективно:

var neuserkeys = от U в kellkeys где (db.maillistusers.gh где (j => j.userkey == u.userkey) .count () == 0) Выберите U;

Я не на 100% уверен, что будет работать; В качестве альтернативы вы можете выбрать все существующие пользовательские клавиши, а затем пересекайте ссылку против этого:

var neuserkeys = userkeys.gh (i =>! ustractkeys.contains (i.userkey));

снова, не T знать все последствия производительности.

HTH.

-121--5044816-

выходы (в интерфейсе Builder) являются переменными элемента в классе, где объекты в дизайнере присваиваются, когда они загружаются во время выполнения. Макрос Iboutlet MACRO (который является пустым #define ), сигнализирует построитель интерфейса, чтобы распознать его в качестве розетки, чтобы показать в дизайнере.

Например, если я вытащил кнопку, затем подключите его к выходу ABUTTON (определено в моем интерфейсе .h Файл), загрузка файла NIB во время выполнения присваивает aboutton Указатель к этому UIBUTTON создается от Nib.

@interface MyViewController : UIViewController {
    UIButton *aButton;
}

@property(nonatomic, retain) IBOutlet UIButton *aButton;

@end

Затем в реализации:

@implementation MyViewController

@synthesize aButton; // Generate -aButton and -setAButton: messages

-(void)viewDidAppear {
    [aButton setText:@"Do Not Push. No, seriously!"];
}

@end

Это устраняет необходимость записи кода для создания и назначения объектов GUI во время выполнения.


Что касается делегатов , они представляют собой объекты, используемые другим объектом (обычно обобщенным классом API, например таблицы). Там нет ничего особенного в отношении них. Это больше рисунок дизайна. Класс делегата может определить несколько ожидаемых сообщений, таких как:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

... и объект API вызывает это сообщение о делегате, когда он хочет уведомить его о событии. Например:

-(void)update:(double)time {
    if (completed) {
        [delegate process:self didComplete:totalTimeTaken];
    }
}

и делегат определяет сообщение:

-(void)process:(Process *)process didComplete:(double)totalTimeTaken {
    NSString *log = [NSString stringWithFormat:@"Process completed in %2.2f seconds.", totalTimeTaken];
    NSLog(log);
}

Такое использование может быть:

Process *proc = [Process new];
[proc setDelegate:taskLogger];
[proc performTask:someTask];

// Output:
// "Process completed in 21.23 seconds."
19
ответ дан 5 December 2019 в 05:56
поделиться

Память транзакций программного обеспечения ( STM ) является хорошим альтернативным средством управления параллелизмом. Он хорошо масштабируется с несколькими процессорами и не имеет большинства проблем обычных механизмов управления параллелизмом. Реализуется как часть языка Haskell . Стоит попробовать. Хотя, я не знаю, как это применимо в контексте SQLite.

-121--2789826-

Боты, конечно, не будут запускать код Javascript, но они могут распознать некоторые часто используемые сценарии.

Но рассчитывать на это не стоит. Четкая разметка, правильное содержание и реальные ссылки по-прежнему имеют значение.

Кроме того, если боты узнают ваш сценарий, это может быть не в вашу пользу. Если код распознается как что-то, что обычно используется, чтобы попытаться обмануть ботов, это может даже повредить ранжирование вашей страницы.

-121--3383622-

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

9
ответ дан 5 December 2019 в 05:56
поделиться