Всем привет. В дополнении к моей предыдущей статье был интересный диалог с
kirill_danshin. В конце концов мы это сделали. Встречайте — efaceconv, тулза для go generate, с помощью которой можно приводить типы из interface{} без аллокаций и в ~4 раза быстрее.
Читать полностью »
Рубрика «runtime» - 2
Type assertation without allocations
2016-11-22 в 5:56, admin, рубрики: Go, hack-runtime, runtime, type assertationПростой, естественный вопрос: какие бывают библиотеки UWP?
2016-07-18 в 17:36, admin, рубрики: component, libraries, runtime, uwp, WebView, winmd, WinRT, библиотеки, разработка под windows, разработка под windows phoneПовторное использование кода и совместимость под различные платформы в наше время довольно актуальный вопрос. Кроме того MSFT в последнее время старается угодить разработчикам различных платформ и языков программирования. Именно поэтому, вероятно, возможности универсальной платформы Windows позволяют использовать не один тип библиотек. Под катом о том, какие библиотеки, как и зачем можно использовать в приложениях UWP.
Читать полностью »
Method Swizzling и Swift: но есть нюанс
2016-01-05 в 10:59, admin, рубрики: method swizzling, objective-c, runtime, swift, разработка под iOSИногда для удобства, иногда для того, чтобы обойти баг в фрэймворке, а иногда просто от безысходности, может понадобиться переопределить поведение некоторого метода класса, созданного кем-то другим. Method Swizzling позволяет подменить метод вашим прямо в runtime, притом оставляя оригинальную имплементацию доступной.
В статье Objective-C Runtime. Теория и практическое применение этот процесс хорошо описан. Но с переходом на Swift появляются некоторые нюансы.
Читать полностью »
Age of JIT compiling. Part II. CLR is watching you
2015-03-15 в 12:57, admin, рубрики: .net, C#, c++, clr, compilier, CoreCLR, generics, jit, optimizations, runtime, Компиляторы, Программирование Продолжая тему JIT-компиляции .NET'a, сегодня мы рассмотрим диспетчеризацию методов у интерфейсов, generics (как классов, так и отдельных методов вместе с реальными сигнатурами); производить отладку релизных сборок с оптимизациями; разберемся с истинным предназначением типа System.__Canon (это не то, что Вы подумали).
Читать полностью »
Приватные методы для отладки
2014-06-28 в 22:25, admin, рубрики: debug, iOS, objective-c, private, runtime, разработка под iOS, метки: debug, iOS, objective-c, private, runtime Наверняка уже все знают, что у UIView есть полезный метод recursiveDescription.
Вызов которого, вернет строку с описанием всей иерархии вью.
(lldb) po [[self view] recursiveDescription]
<UIView: 0x6a107c0; frame = (0 20; 320 460); autoresize = W+H; layer = […]
| <UIRoundedRectButton: 0x6a103e0; frame = (124 196; 72 37); opaque = NO; […]
| | <UIButtonLabel: 0x6a117b0; frame = (19 8; 34 21); text = 'Test'; […]
.....
Еще многие знают, что при помощи рантайма, можно получить список переменных/методов/свойств/протоколов/… класса. И обычно для этих целей пишут вспомогательный код. Но оказывается, все уже давно написано сотрудниками Apple. В UIKit.framework реализована категория с именем IvarDescription.
@interface NSObject (IvarDescription)
- (id)_shortMethodDescription;
- (id)_methodDescription;
- (id)__methodDescriptionForClass:(Class)arg1;
- (id)_ivarDescription;
- (id)__ivarDescriptionForClass:(Class)arg1;
@end
Названия метдов говорят за себя. Но давайте посмотрим, что же они возвращают.
Читать полностью »
Objective-C Runtime в примерах
2014-03-06 в 9:35, admin, рубрики: adcspb, mobile development, objective-c, runtime, Блог компании e-Legion Ltd., разработка под iOS, метки: adcspb, objective-c, runtimeПродолжаем выкладывать видео с одиннадцатой встречи Apple Developers Community, которую 27 февраля провели компании e-Legion и Jetbrains.
Следующий докладчик Алексей storoj Сторожев, разработчик e-Legion. Цель доклада — вдохновить разработчиков на более глубокое изучение возможностей Objective-C Runtime, показать способы исследования системы, воодушевить аудиторию на эксперименты.
В докладе показаны несколько примеров использования Objective-C Runtime для решения нетипичных задач.
Читать полностью »
Objective-C Runtime. Теория и практическое применение
2013-05-06 в 12:03, admin, рубрики: Cocoa, internals, iphone development, objective-c, osx, runtime, разработка под iOS, метки: Cocoa, internals, iphone development, objective-c, osx, runtime В данном посте я хочу обратиться к теме, о которой многие начинающие iPhone-разработчики часто имеют смутное представление: Objective-C Runtime. Многие знают, что он существует, но каковы его возможности и как его использовать на практике?
Попробуем разобраться в базовых функциях этой библиотеки. Материал основан на лекциях, которые мы в Coalla используем для обучения сотрудников.
Читать полностью »
Переопределение реализации метода. Вдохновленный Java’ой
2013-02-15 в 3:08, admin, рубрики: fun, imp, method, objective-c, override, runtime, разработка под iOS, метки: fun, imp, method, objective-c, override, runtimeВступление
Изучая основы разработки под Android мне пришлось познакомится с таким замечательным языком, как Java. Читая очередной раздел гугловского GetStarted я наткнулся на такую конструкцию:
Button.OnClickListener mTakePicSOnClickListener =
new Button.OnClickListener() {
@Override
public void onClick(View v) {
}
};
Объявление представителя OnClickListener и переопределения у него метода onClick (поправьте меня Java программисты). Хм, подумал я, а круто бы эту фичу поиметь в Objective-C, а именно возможность переопределять реализацию метода у объекта(конкретного объекта, а не реализацию метода для всех объектов класса) да еще и через блоки в runtime (!) и забыл о этом всем… пока не оказался в полупустом автобусе в дождливую погоду. Времени было много и я решил поразмыслить над тем, что же тут можно сделать.
Зачем это нужно было? Изначально хотелось уметь делать так:
tableView1.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
NSLog(@"selected row %i", ip.row);
}]
tableView2.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
NSLog(@"selected row %i", ip.row);
}]
Обратите внимание, что предполагается изменение именно делегата и добавление/предопределение методов у него. А tableView остается оригинальным, без каких либо изменений.
Тем самым местом я чувствовал, что это вполне реализуемо благодаря богатому внутреннему миру Objective-C Runtime.
И да, то самое место меня не подвело.
Читать полностью »
Objective-C Runtime изнутри
2012-08-03 в 12:46, admin, рубрики: Cocoa, objective-c, osx, runtime, перевод, разработка под iOS, метки: Cocoa, objective-c, osx, runtime, перевод(оригинал — Mike Ash, взято отсюда)
Многие Cocoa разработчики имеют довольно смутное представление об Objective-C Runtime API. Они знают, что он существует где-то там(некоторые не знают даже этого!), что он важен, и Objective-C без него неработоспособен, но обычно этим все знания и ограничиваются.
Сегодня я расскажу о том, как устроен Objective-C на уровне Runtime и о том, как конекретно вы можете это использовать.
Читать полностью »