まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Swift

GoogleAnalyticsのiOS SDKをpodspec側のdependencyにすると相性が悪い

GoogleAnalyticsのSDKのラッパーライブラリを作りたい そのためには、podspec側にdependencyを書いておく必要がある。こんな感じ。 Pod::Spec.new do |s| s.name = 'Example' s.version = '0.1.0' s.summary = 'A short description of Example.' 略 s.depen…

Objective-Cのallocは何をしてるのか

allocはNSObjectのクラスメソッド alloc - NSObject | Apple Developer Documentation + (instancetype)alloc; The isa instance variable of the new instance is initialized to a data structure that describes the class; memory for all other instanc…

AnyClassの正体

AnyObjectの型 typealias AnyClass = AnyObject.Type 何か分からないものの型を表現してる。 参考 Swifter - Swift Must Know Tips

Swiftで動的にクラス作ってメソッド呼ぶ。しかも全く型情報がない状態で。要はjavascriptみたいなことがしたい

まとめ NSSClassFromString使う 引数が3つ以上だとperformSelectorは使えない SwiftだとNSInvocationは使えないので代わりにIMPを使う Class methodとInstance methodで呼び方ちょっと違う performSelectorの返り値の型はUnmanaged<AnyObject>でtakeUnretainedValueを使</anyobject>…

Swift1.2でenumにジェネリクス使ってその型を束縛できないって言ってるやつの意味が分かった

少し前のことだけど、今のプロジェクトが始まった頃にコード書いてて理解できたのでメモ。 ジェネリクスがない場合 成功か失敗か返すのにEnumを作るとしてジェネリクスがないとこうなっちゃう。 enum Result { case Success(AnyObject) case Failure(NSError…

SwiftでClassを作るときにNSObjectを継承するべき?

どっちを採用するべき? class Animal {} // or class Animal: NSObject {} こっちのにしておけばとりあえず間違いないとか、こっちを使うとこんな時に困るとかそういう指針が知りたい。 よさそうな回答 Swift native base class or NSObjectstackoverflow.c…

実プロジェクトにおけるSwiftっぽい書き方集が欲しい

勉強会とか開かれないかなー。こんなのを知りたい。自分用メモ。 UITableViewのDataSource、DelegateをジェネリクスでSwiftっぽく分離する。 UITableViewのSectionをEnumでうまいこと扱う Structの使いどころ Protocolの使いどころ カテゴリ拡張をProtocol E…

Swiftでprivateメソッドのユニットテストをどうするか

こんな話は何年も前から語られてて答えも出てると思うけど、色々な意見を聞いて自分の考えが少しずつまとまってきたので残しておく。 聞いた意見 publicメソッドをテストすればprivateメソッドのテストも行われていることになる リフレクションやモックなど…

Swiftでreduceを使ってArrayからDictionaryを作る方法

how to convert array to dictionary swiftとかでググってもあんまでてこないから書いた。 以下、Qiitaに書いたやつ。 Swiftでreduceを使ってArrayからDictionaryを作る方法 - Qiitaqiita.com

Swiftのif文でwhereを使ったときのelseの条件

ifとwhere書いてるときにふと迷ったので書いた。 Swiftのif文でwhereを使ったときのelseの条件 - Qiitaqiita.com

【Swift】UIKitベースの画面でSpriteKitでエフェクトを追加する

iOSオールスターズでSpriteKitがUIKit上で使えることを知った iOSオールスターズというイベントに行ってきた。イベントレポート書こうと思ったけど、最速でいいのがまとまってたのでさぼりましたw ためになる発表が多かったけど、その中でも @ryusukefuda …

Swiftでジェネリクスが使われているメソッドを理解する

ジェネリクスが分からない BondっていうSwiftで関数型リアクティブプログラミングをするためのオープンソースがあります。試しに使ってみようと触ってるんですが、README通りに動かないのでライブラリのコードを眺め始めました。しかし、書いてあるコードが…

iOS8からの日付(NSDate)操作・比較

日付操作とか比較とかしようとか思ってググると、NSDateComponentsを使ったやつがよく出てきます。一旦NSDateComponentsを作ってから一つの要素ごとに足し算したりとか色々めんどいなーと思ってリファレンス見てたら、日付操作とか日付比較で便利なメソッド…

はてなブログでSwiftのシンタックスハイライト

が、なかなか実装されません。。まだされてませんよね?? 追記 2015/01/10 されました!やったー! はてな記法とMarkdownのシンタックス・ハイライトで、Swift言語に対応しました - はてなブログ開発ブログ 実装されるまで、それっぽい色になる代わりの言語…

SwiftでバックグラウンドでもiBeaconを検知する方法

Swfitの練習のためにiBeaconのサンプル作って練習してみました。 mpon/BeaconSample iBeaconをバックグラウンドでも受信するポイントは、 Info.plistにNSLocationAlwaysUsageDescriptionを追加 CapabilitiesでBackground Modesでの位置情報の更新の設定を追…

SwiftでisKindOfClass:するにはダウンキャストを利用する

Objective-CでisKindOfClass Objective-Cだとid型で何かを受け取ることがあって、それを検査するのにisKindOfClass:使いますね。例えばこんな感じ。 - (IBAction)buttonDidPush:(id)sender { if ([sender isKindOfClass:[UIButton class]]) { NSLog(@"This i…

swiftのvarとletってどっち使えばいいの?

varは変数で、letは定数ってことだと思ってるけど、 じゃあ、letで宣言した変数のプロパティを変更するのはOKなの? という疑問があったので、調べた。 letで宣言したやつは、インスタンスのプロパティは変更してもOK。 letで宣言したやつに、再代入するのが…

NSDateを例にSwiftの初期化を理解してみる

Objective-Cならこう書くよね。 // クラスメソッド NSDate *date1 = [NSDate date]; // インスタンスメソッド NSDate *date2 = [[NSDate alloc] init]; // objcではこれはあんまり使わないけど じゃあSwiftは? var date1 = NSDate.date() var date2 = NSDat…

swiftのdesignated initializerとconvenience initializer

NSDateのreference見てると、こういうところが出てくる。 extension NSDate { class func distantFuture() -> AnyObject! /* NSDate * */ class func distantPast() -> AnyObject! /* NSDate * */ init() /* designated initializer */ init(timeIntervalSin…