NSAutoreleasePool в основном NSOperation?

Я следил за этой нитью, и я, возможно, наткнулся на ответ на ваш вопрос об автофокусировке на EditorFor - это все Asp.Net 4.5 и MVC 5, но это не важно.

  1. В папке Scripts у меня есть файл сценария jQuery: $ (function () {$ ('. someclassname'). focus ();});

Я добавляю имя скрипта к BundleConfig и отобразить его в представлении.

  1. В представлении я добавляю имя класса в EditorFor <div class="col-md-10" someclassname">
  2. Затем добавляю type="text" autofocus="autofocus" в редактор EditorFor @класс. Итак, new{@class="form-control", type="text", autofocus="autofocus"
  3. Это в значительной степени, когда DOM загружает поле .someclassname, получает курсорный фокус ... PS. Фактически, если вы просто выполняете (3), это также работает ...
25
задан Chris Hanson 28 October 2008 в 05:06
поделиться

5 ответов

Да, Вы делаете. Вы определяете автономную работу, которая NSOperationQueue выполнит на "немного" поток, таким образом, Вы будете ответственны за руководящую память в той части работы.

12
ответ дан 15 October 2019 в 16:54
поделиться

Вы не должны создавать свой собственный NSAutoreleasePool в Вашем основном, система делает это для Вас. Для наблюдения этого используйте Выполнение команды меню Xcode> Шоу> Точки останова, чтобы открыть окно Breakpoints и ввести: - [NSAutoreleasePool init]

Теперь запускает Вашу программу, и Вы будете видеть, что пул автовыпуска создается в NSOperation.

Видят также, примеры Apple, например, http://developer.apple.com/Cocoa/managingconcurrency.html , которые не создают их собственный пул автовыпуска.

6
ответ дан DavidPhillipOster 15 October 2019 в 16:54
поделиться

Да, необходимо создать NSAutoreleasePool в Вашем [NSOperation main] метод, если Вы не создаете "параллельное" (немного неудачная номенклатура) NSOperation подкласс и Ваш переопределенный [NSOperation start], метод создает NSAutoreleasePool прежде, чем назвать' [NSOperation основным].

NSOperation документация класса имеет хорошее описание всего этого: http://developer.apple.com/documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html .

2
ответ дан Barry Wark 15 October 2019 в 16:54
поделиться

да, вам нужно.

- (void) main
{
  NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init];
  //your code here
  //more code
  [thePool release];
}

если вы не создаете пул автозапуска, любой удобный инициализатор класса (например, [NSString stringWithFormat:]) будет протекать, поскольку эти инициализаторы возвращают автоматически выпущенные объекты .

0
ответ дан 28 November 2019 в 21:32
поделиться

Хороший вопрос, даже собственные документы Apple и пример кода не очень ясны по этому поводу. Думаю, я нашел ответ:

Поскольку операции являются объектами Objective-C , вам всегда следует создавать пул автозапуска на ранней стадии реализации вашей задачи. код. Пул автозапуска обеспечивает защиту от утечки объектов Objective-C , которые автоматически освобождаются во время выполнения вашей задачи. Хотя может уже существовать пул к моменту выполнения вашего пользовательского кода, вы никогда не должны полагаться на это поведение и всегда должны предоставлять свои собственный.

По сути, даже если есть бассейн, о котором упоминал Дэвид, вы все равно должны создать свой собственный.

14
ответ дан 28 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: