AppDomain.CurrentDomain.BaseDirectory
работает с интерфейсом MbUnit.
Если можете, дайте классу метод myObjectLoaded:
, который будет вызываться при загрузке рассматриваемого объекта. В противном случае наиболее идиоматическим эквивалентом того, что вы написали выше, является создание таймера, который продолжает проверять myObject и что-то делает, как только находит его.
Если вам действительно нужно было сделать это в середине метода по какой-то причине, вам нужно будет создать цикл, который будет продолжать выполнение цикла выполнения. Ваше приложение блокируется из-за отсутствия цикла выполнения.
NSNotification должно решить проблему.
Вместо ожидания объекта, пусть этот объект регистрирует уведомления, поступающие от другого вашего объекта (например, издателя), который заполняет данные асинхронно. Как только этот объект Publisher завершится, пусть он отправит NSNotification, которое затем будет автоматически получено вашим ожидающим объектом. Это также устранило бы ожидание.
Похоже, вы ищете образец наблюдателя. Apple называет это « уведомление ».
Предполагая, что у вас есть фоновый NSThread, выполняющий эту операцию заполнения, вам может понравиться Метод NSObject performSelector: onThread: withObject: waitUntilDone
Это потому, что вы останавливаете основной поток, ожидая загрузки вашего объекта. Не делайте этого, потому что основной поток - это поток, который управляет пользовательским интерфейсом и ожидает ввода пользователя. Если вы блокируете основной поток, вы блокируете пользовательский интерфейс приложения.
Если вы хотите, чтобы основной поток что-то делал при загрузке объекта, тогда создайте метод myObjectLoaded: и вызовите из ваших потоков загрузки:
[myObjectController performSelectorOnMainThread:@selector(myObjectLoaded:)
withObject:myObject
waitUntilDone:NO];
где myObjectController может быть любым объектом, даже самим myObject.