У меня есть проблемы, понимая понятие выходов, как iPhone имеет дело с событиями.На помощь! Делегаты смущают меня также. Кто-то хотел бы объяснить?
Чтобы запросить пользователей, которые нужно удалить, сделать:
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."
Память транзакций программного обеспечения ( STM ) является хорошим альтернативным средством управления параллелизмом. Он хорошо масштабируется с несколькими процессорами и не имеет большинства проблем обычных механизмов управления параллелизмом. Реализуется как часть языка Haskell . Стоит попробовать. Хотя, я не знаю, как это применимо в контексте SQLite.
-121--2789826-Боты, конечно, не будут запускать код Javascript, но они могут распознать некоторые часто используемые сценарии.
Но рассчитывать на это не стоит. Четкая разметка, правильное содержание и реальные ссылки по-прежнему имеют значение.
Кроме того, если боты узнают ваш сценарий, это может быть не в вашу пользу. Если код распознается как что-то, что обычно используется, чтобы попытаться обмануть ботов, это может даже повредить ранжирование вашей страницы.
-121--3383622-Делегат - это объект, которому другой объект может пересылать сообщения. Другими словами, это как когда твоя мама велела тебе обчистить твою комнату, а ты трахнул ее на своего младшего брата. Ваш маленький брат знает, как делать работу (так как вы были слишком ленивы, чтобы когда-либо учиться), и поэтому он делает это для вас.