планирование Потока после Потока в приложении для iPhone

На интерпретируемых языках различие является немного более тонким.

Ruby:

# early binding:
def create_a_foo(*args)
  Foo.new(*args)
end
my_foo = create_a_foo

# late binding:
def create_something(klass, *args)
  klass.new(*args)
end
my_foo = create_something(Foo)

, поскольку Ruby (обычно) не компилируется, нет компилятора, чтобы сделать, острота заранее наполняет. Рост JRuby означает, что больше Ruby компилируется в эти дни, тем не менее, заставляя его действовать больше как Java, выше.

проблема с IDE все еще стоит: платформа как Eclipse может искать определения классов, если Вы, твердый код их, но не может, если Вы оставляете их до вызывающей стороны.

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

5
задан Peter Hosey 29 October 2009 в 08:27
поделиться

2 ответа

If you use NSOperations you can use the addDependency: method to specify an operation's dependencies.

NSInvocationOperation will probably be useful to you if you go this route.

Edit: I just re-read the subject and you're on iPhone so you don't have blocks, but for reference, if you have blocks available, NSBlockOperation is even better.

Note that when using these methods to perform asynchronous operations (and assuming the code in them uses autorelease) you'll be responsible for instantiating an NSAutoreleasePool when your method starts running and releasing/draining it upon exit.

10
ответ дан 13 December 2019 в 05:37
поделиться

(1) Вы можете опросить потоки isFinished свойство.

(2) Вы можете зарегистрировать свой объект диспетчеризации / управления для получения потоков NSThreadWillExitNotification уведомление. Для более точного управления вы можете создать подкласс NSThread и отправить уведомление в качестве последнего действия перед остановкой потока. Затем в обработчике уведомлений о управляющих объектах вы можете опросить isFinished , чтобы убедиться, что это выполнено, перед запуском следующего потока.

См. Руководство по программированию ниток и Руководство по классам NSThread .

2
ответ дан 13 December 2019 в 05:37
поделиться