MacRuby NSTextView добавление текста зависает программа - PullRequest
1 голос
/ 28 ноября 2011

У меня есть NSTextView, к которому я добавляю текст, используя

def puts(val)
    storage = @output.textStorage
    storage.beginEditing
    storage.appendAttributedString(NSAttributedString.alloc.initWithString(val+"\n"))
    storage.endEditing
end

Это работает несколько раз, но в какой-то момент времени зависает вся программа (вращающийся шарик смерти).

Я вызываю этот метод из потока MacRuby, так что я думаю, что он как-то связан с ним.

1 Ответ

2 голосов
/ 13 декабря 2011

Я установил свойство string моего NSTextView с именем home_text на

home_text.string = "a very loooooong string"

У меня никогда не было "пляжного волейбола / пиццы смерти". Когда я не уверен, что могу положиться на значение по умолчанию, я добавляю элемент управления к строке, которую я хочу добавить к NSTextView, чтобы избежать установки значения nil. Основные вещи здесь, я знаю, извините!

Выполняете ли вы какие-либо операции ввода-вывода в основном потоке или где-либо еще, не используя наиболее надежные асинхронные API-интерфейсы Какао? Как загрузка материалов из Интернета, которые, например, будут выполняться более безопасно, используя NSURLDownload вместо

Net::HTTP.get('...a url...','..a path..")

или

download_url = NSURl.UrlWithString '...a url...'
download_data = NSMutableStringalloc.initWithContentsOfUrl(download_url, 
                                                           encoding:..., 
                                                            error:...)

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

...