Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rubymotion - Ruby <3 iOS
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tiago Bastos
April 08, 2013
Programming
100
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubymotion - Ruby <3 iOS
Tiago Bastos
April 08, 2013
More Decks by Tiago Bastos
See All by Tiago Bastos
Ruby & Elixir - Real time applications
bastos
4
300
Não está feito até estar testado
bastos
2
190
Other Decks in Programming
See All in Programming
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
120
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
190
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.4k
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
230
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
400
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
Featured
See All Featured
Crafting Experiences
bethany
1
250
The untapped power of vector embeddings
frankvandijk
2
1.8k
WENDY [Excerpt]
tessaabrams
11
39k
Making Projects Easy
brettharned
120
6.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Between Models and Reality
mayunak
4
390
Bash Introduction
62gerente
615
220k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
Tell your own story through comics
letsgokoyo
1
1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Transcript
Rubymotion Ruby <3 iOS Monday, 8 April 13
Tiago Bastos • @bastos • github/bastos •
[email protected]
Monday, 8
April 13
Monday, 8 April 13
Why? • Ruby • Ruby • Ruby • Nativo •
Ferramentas Monday, 8 April 13
Why? • Ruby • Ruby • Ruby • Nativo •
Ferramentas (VIM) Monday, 8 April 13
Nativo? Monday, 8 April 13
NATIVO Monday, 8 April 13
LLVM Monday, 8 April 13
Monday, 8 April 13
Runtime Unificada Monday, 8 April 13
Mais • Gerenciamento de memória ARC Like • Concorrência (GCD)
• Rápido (já falei, nativo!) • App Store (TM) Safe Monday, 8 April 13
Ruby Monday, 8 April 13
Ruby • Módulos (Namespace) • Re exão e meta programação
• O Ruby que você conhece, Menos Eval • DSLs Monday, 8 April 13
DSLs e Wrappers • Teacup • SugarCube • Bubblewrap Monday,
8 April 13
Monday, 8 April 13
class MyController < UIViewController stylesheet :main_screen layout do
subview(UIButton, :finished_button) end end Monday, 8 April 13
Teacup::Stylesheet.new :main_screen do style :finished_button, origin:
[10, 10], title: 'Hi!' end Monday, 8 April 13
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"https://github.com"]]; Monday, 8 April 13
"https://github.com".nsurl.open Monday, 8 April 13
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you want to
say hello?" message:@"More info..." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Say Hello",nil]; [alert show]; -‐ (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { NSLog(@"Cancel Tapped."); } else if (buttonIndex == 1) { NSLog(@"OK Tapped. Hello World!"); } } Monday, 8 April 13
UIAlertView.alert "Is this cool?", buttons: %w[No! Sure! Hmmmm],
message: "No going back now", cancel: proc { self.cancel }, success: proc { |pressed| self.proceed if pressed == "Sure!" } Monday, 8 April 13
UIView.animation_chain { view.slide(:left, 20) }.and_then { view.slide(:up, 20)
}.and_then { view.slide(:right, 20) }.and_then { view.slide(:down, 20) }.and_then { view.fade_out }.start Monday, 8 April 13
BW::Location.get do |result| p "From Lat #{result[:from].latitude}, Lng
#{result[:from].longitude}" p "To Lat #{result[:to].latitude}, Lng #{result[:to].longitude}" end Monday, 8 April 13
Testes Monday, 8 April 13
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) button.setTitle('Take over the world', forState:UIControlStateNormal) window.addSubview(button)
tap 'Take over the world' Monday, 8 April 13
Mais! • Bootstrap Simples • Rubygems • Testes • Usar
bibliotecas em Objective-C (não é bridge!) Monday, 8 April 13
Ferramentas • Terminal based • Rake • Debugging (GDB based)
• Use seu Editor • CocoaPods Monday, 8 April 13
Monday, 8 April 13
Monday, 8 April 13
Monday, 8 April 13
app.version = '1.0.0' app.device_family = [:iphone] app.interface_orientations
= [:portrait] app.files += Dir.glob(File.join(app.project_dir, 'styles/**/*.rb')) app.development do app.codesign_certificate = "iPhone Developer: Tiago Bastos da Silva (HL4267W8QH)" app.provisioning_profile = File.expand_path("~/Library/MobileDevice/Provisioning Profiles/CE5529C9-‐0F02-‐40BA-‐ B2D9-‐8A342757DBB9.mobileprovision") end app.libs += %w(/usr/lib/libz.dylib /usr/lib/libsqlite3.dylib) app.pods do pod 'Facebook-‐iOS-‐SDK', '~> 3.2.1' pod 'MBProgressHUD' end app.frameworks += [ 'AudioToolbox', 'CFNetwork', 'CoreGraphics', 'CoreLocation', 'MobileCoreServices', 'QuartzCore', 'Security', 'StoreKit', 'SystemConfiguration', 'Accounts', 'AdSupport', 'Social' Monday, 8 April 13
Perguntas? Monday, 8 April 13
Perguntas? Não? Monday, 8 April 13
Perguntas? Não? Ok Monday, 8 April 13