Содержание
- 2. C#? Доклад проплачен? Да! (на самом деле нет ☹) Лямбда-выражения, делегаты, евенты LINQ Properties Generics Структуры
- 3. Асинхронный код раньше MyApi.OnSomeMethod += () => { InvokeOnMainThread( (result) => { textView.Text = result; });
- 4. async/await textView.Text = await MyApi.GetUrlAsync( “http://touchin.ru”);
- 5. С# vs Objective-C Objective-C: // … [button addTarget:self action:@selector(touchHandler:) forControlEvents:UIControlEventTouchUpInside]; // … -(void) touchHandler:(id)sender { textView.text
- 6. С# vs Objective-C C#: btn.TouchUpInside += (sender, e) => { textView.Text = "Clicked!"; } ;
- 7. C# vs Java Java: button.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { textView.setText(“Clicked”); } }
- 8. C# vs Java C#: button.Click += (sender, e) { textView.Text = “Clicked!”; } ;
- 9. C# vs {0} Проще Чище Развивается очень быстро Меньше скобочек (но еще не Ruby/Python) Из Java
- 10. Мир, дружба!
- 11. Mono Свободная реализация стандарта ECMA-334 (C#) и ECMA-335 (CLI) Развивается с 2004 года Основатель – Miguel
- 12. Xamarin Ximian -> Novell -> Attachmate -> Xamarin Продает и саппортит Monotouch + Mono for Android
- 13. Ах, да, представиться ☺ 1.5 года опыта разработки с Monotouch Своя компания разрабатывающая мобильные приложения для
- 14. Что же такое Monotouch Mono framework с AOT компиляцией для ARM процессоров и Bindings к родным
- 15. Процесс компиляции Компилируется ваш код, библиотеки, BCL, обертки над нативными методами в IL Теоретически можно юзать
- 16. AOT vs JIT Обычно в .Net и Mono машинный код генерируется в момент запуска – Just
- 17. Ограничения AOT Нету Emit, но Reflection остается Некоторые специфичные конструкции работать не будут, т.к. компилируются на
- 18. Linking В момент компиляции в IL из BCL берется только тот код, который реально используется Таким
- 19. C#-изация API Подписка на евенты Установка свойств Привычные названия var btn = new UIButton(new RectangleF(0, 0,
- 20. Обертки над нативными методами Monotouch: Все сводится к P/Invoke метода objc_msgSend c нужными параметрами См код
- 21. Обертки над нативными методами public virtual bool Enabled { [Export("isEnabled")] get { // … return Messaging.bool_objc_msgSend(base.Handle,
- 22. Структура приложения Практически соответствует такой же у нативного приложения AppDelegate, UIWindows, ViewControllers Для описания UI также
- 23. Дебаг Вместе с дебаг сборкой идет вся отладочная инфа + механизм удаленного дебага Раньше был по
- 24. Garbage Collector Работает ☺ Агрессивен – может часто вызываться Не забывайте – локальная переменная, значит обязательно
- 25. Среда разработки - Monodevelop
- 26. Для UI - XCode
- 27. Интеграция со сторонними либами P/Invoke для С кода btouch для Objective-C Bindings В первый раз сложно,
- 28. Минусы Размер (минимум 2-3Мб) Рантайм идет с каждым приложением Производительность (но не критично) Все равно придется
- 29. Плюсики Код шаринг (но не забываем про ограниченный WP7) Не надо учить Objective-C (на самом деле
- 30. А что на практике А на практике вполне себе хорошо CoinKeeper (iOS + Android + сервер)
- 31. Mono for Android Почти тоже самое, за исключением: JIT комплиция, можно EMIT (на андройде вообще все
- 32. Кроссплатформенность Шаринг в районе 30-60 процентов кода В основном работа c АПИ, с локальной базой, внутренняя
- 33. Делайте хорошую архитектуру! Четкое разеделение кода логики и UI Unit test’ы (на девайсе тоже – TouchUnit)
- 34. Xobot OS Android переписанный на С# Быстрее обычного андройда из-за особенностей C# Просто концепт
- 35. Риски
- 36. Конкуренты Appcelerator PhoneGap Unity (тоже на Mono работает)
- 38. Скачать презентацию