ObjCから書き換えメモ その2

ジェネリクスがあっても変換される。ジェネリクス自体はObjCには現れない。 ジェネリクスありのNSObjectの継承の継承したクラスはコンパイルエラーになる Protocolにジェネリスクをもたせるのは大変(途中で諦めた ObjCからメインのSwiftのコードを直接呼ぶ…

ObjCから書き換えメモ その1

参考 http://wonderpla.net/blog/engineer/SwiftWithObjective-C/ 箇条書き -Bridging-Header.hにimportすればObjective-CのコードをSwiftで使える -Swift.hを.mがimportすればSwiftのコードがObjective-Cで使える -Swift.hは補完が聞かない -Swift.hはSwift…

Swiftの現状と今後の予想

Objective-Cの概要 iOSについてしか知らないのでiOS5意向しか知らないです。 Objective-CはC++同時期に誕生し、C言語とオブジェクト指向を混在できるようにした言語です。Javaなど多くの言語に影響を与えてきました。 Objective-Cはメモリ管理やライブラリの…

テストに関する疑心暗鬼

疑い始めたらキリがないという話です。ぐだぐだです。 固定した値でのテスト 例えば、FizzBuzzのテストをするとしよう。fizzBuzzを返すことをテストするときは、Objective-Cだと下記のように書く - (void)testFizzBuzz15 { NSString *result = FizzBuzz.mapp…

Storyboardに移行するためのシナリオサンプルを書いた

Storyboardに移行するサンプル - まとめ なんで書いたの? Storyboard使わないアプリを滅ぼすため。レイアウトに関してiOSのバージョンの違いや、端末の画面サイズの違いを吸収するために、コードだけで対応するのは非常に厳しい状況があります。現在主流は…

進捗アドベントカレンダー

進捗Advent Calendar 2013 の22日目です。いいとか悪いとか置いておいてだらだらと、今年あったこと書いていこうと思います。 生活とかそんなん 大学院を卒業しました。何とかした感じです。内容は聞かないでください。ただ、何故か修論を学外で3回発表して…

いろふさんの描かれていない領域には何があるのか

いろふ Advent Calendar 2013 の12日目です。 Advent Calendarは締め切りに追われる何かではないはずだが、追われながら書いています。お絵かき系のネタ。魚的な何かだパッ◯ン的な何かだ(見えない)クシバシ的な何かだ。(何このいきものキモい)むしろ、左側が…

とりあえずこれで何とかした、SroryboardだけでiOS7のレイアウト問題への対応する方法

iOS

Xcode5でビルドするとiOS7のレイアウトが総崩れになるので、それに対してStoryboardだけで対応してみました。これだけでは足りない部分はいくつかありますが、とりあえずです。 問題:ステータスバーが透過されてレイアウトが崩れる。 NavigationBarがある場…

初めてiOS開発入門

対象: ある程度、プログラミング言語をできる人。 開発環境を選びましょう ネイティブ(Objective-C)、RubyMotion(Ruby)、Titanium(javascript)などがあります。得意なものがあればそれを使うのがいいかもしれません。ここではネイティブの開発の話をします…

Categoryの比較

この記事、どれだけの人に需要があるのですかね? 概要 カテゴリとは、既存のクラスに対してメソッドを追加する機能。既存のクラスを再コンパイルする必要がなく、クラスの挙動を変更することができる。 Groovyのカテゴリは、Objective-C由来です。Objective…

TableViewAgentを作りました。

何これ? 本来UITableViewControllerでUITableViewDataSourceとUITableViewDelegateを実装する必要はない。その辺りの処理を別のクラス分けたほうが、本来行いたい処理に集中できる。そこで作ったのがこのTableViewAgentである。cocoapodsでinstallできます…

配布ステッカーまとめ

これは、2014/2/12時点での情報です。不定期に更新されます。 Twitterでmentionを飛ばせば、取って置くこともできます。

Storyboardからidentifyを取り出すツールを作った

https://github.com/akuraru/ExtractingIdFromStoryboardStoryboardでSegue等に値を指定したい場合、identifyを指定する必要がある。Objective-C側では文字列指定しないといけない。これは、補完が効かないので非常に間違いやすい。そこで、Storyboardからid…

NSUserDefaultsの管理クラス自動生成してみた

NSUserDeaultsは、アプリのデータを保存しておくためのクラスです。KeyとDataをペアにして扱います。しかし、NSUserDefaultsを直接扱うとKeyの文字列を間違えたり、Dataの型を間違えたりするので、管理クラスを書いています。しかし、アプリごとに毎回管理ク…

iOSアンチパターン

メモリの手動管理 1. 目的:メモリの最適化 Objective-Cでは、C言語と同様に生成したオブジェクトは手動で管理しなくてはいけません。メモリーリークを回避するために、必ずautoreleaseかreleaseを行わなければいけません。メモリを適切に管理することによっ…

より短く書くために

@による省略 interfaceとかの@マークの話ではなく,@"文字列"などのアットマークの話です. この@は普段無意識に使っているかもしれませんが,これは@の直後にある型を自動で判断してプリミティブ型からオブジェクトを生成する省略記号である.つまり以下の…

SQLアンチパターン読書会に行ってオススメの本を聞いてみた

SQL

SQLアンチパターン読書会に行って,最後に「SQL初心者なのですが,オススメの本はありますか?」と聞いて見ました.いろいろ出てきたので紹介したいと思います. 主に答えてくれていたのが,@t_wada と @inda_re なので信頼性はあると思います SQL書き方ドリ…

0について

Objective-Cにおいて0は特別な扱いをされているので,まとめておこうと思う. この記事において,変数に格納されているものを値と呼ぶ. さらに以下のコードでf()が実行される値をSuccessといい,g()が実行される値をFailureということにする if (boolean) {…

Storyboardの国際化を自動化する

iOS6以降であれば,国際化したStoryboardを一つにまとめる ことができるそうですが,残念ながらそれ以前では,複数のStoryboardを手動で変更しなければなりません.言語数がn,機能数がmとして,一つの言語を追加するたびm個の機能を翻訳し,一つの機能が変…

Gradle+guardでGHUnitの自動テスト環境を構築してみた

GHUnitは,Mac OSX/iOSのかなり高機能なテストフレームワークである.これには,以下の様な特徴がある ・非同期通信のテストが容易にできる ・ iPhone実機・シミュレータで動作確認ができるただ,デメリットの一つとして,GHUnitは通常シミュレータ(又は実機…

MVCとObserverパターン

MVCとは Model ビジネスロジックを表現する要素.状態を持っている.Controllerから要求を処理し,状態の変更をViewに通知する.ViewやControllerに依存しない. SQLや一時保存したデータを書き換えたりする. View UIを担当する.Modelの状態をユーザーに表…

[Objective-C]Category のOver Rideは避けた方がいい

Objective-Cにはカテゴリと呼ばれる既存のクラスにメソッドを追加する機能があります。その追加するメソッドは複数ファイル分けて記述することができます。もし、2つのファイルに同じメソッドが定義された場合はどうなるかという話です。例えばNSArrayにfと…

Objective-C Like ScaLa

新感覚アドベントカレンダー、LL/ML Advent Calendar 2012 (#LLAdventJP) の13日目Objective-Cを書いているとどうしても長くなってしまうので、Scalaくらい短く書きたい。というわけでいろいろな方法を使って短くしたいと思います、FizzBuzzを。理想 1 to 10…

unwind Segueについて

Xcode4.5からunwind segueが追加されました。 公式のAdopting Storyboards in Your Appを参照してもらいたい。https://developer.apple.com/videos/wwdc/2012/1.はじめに iOS6以降でないと機能しません。使われているViewControllerから遷移しようとすると…

続・Ustの話

http://d.hatena.ne.jp/akuraru/20120830/p1ビデオカメラを使うとメリットもあれば、デメリットもある。今回はカメラを使わない方法を紹介します。前提として、前の構成を持っている(ビデオカメラはなくて良い)。・用意するもの D-Sub(VGA) - コンポーネント…

これだけあれば、ある程度のクオリティーでUstをできるセットを考えてみた。

前提条件 ・Thunderboltのあるmacbook(Air|Pro)を持っている ・エイチーム(名古屋のルーセントタワー)でやる 図. エイチームの環境 画像はVGAでつないで、音声は無線マイクを使っている。気にすべきところは、画質と音質と通信の3つ。画質と音質は独立させ…

福島ゲームジャムに行ってきた。

http://fgj12.ecloud.nii.ac.jp/ ここに行って来ました。書いているのは8月の終わりですがイベントは6日です。 概要としてはチームごとに30時間でゲームを作って福島を盛り上げよう。というイベントこれがイベント全体の私は中部チーム1でした。 http://fgj…

csv2plistを作りました。

iPhoneアプリでデータベースぽいものであるものであるplistファイル。 チームで作っる場合、データはエクセルで作ることがよくあると思います。そのなものいちいち編集したり、置換したりするのは大変なのでcsvからplistへ変換するプログラムを書きました。…

Ustの依頼とか

最近よくUst等頼まれるので、まとめておきます。頼む前に事前に予定を確認してください。 akuraruのカレンダーUstreamについて 必須条件 ・上り15MB以上の安定した回線 ・電源よりよい環境 ・事前の宣伝(ないとほとんど見られることはありません ・スケジュ…

LifeGameに2次元配列はいらない

LifeGame生きているセルだけを考えていればLifeGameは作れる。そうなるとListとタプルがあれば、2次元配列はいらない事に気づいたのでやってみた。 class Life(var l: List[(Int, Int)]) { def next() { l = step(l); } def step(l: List[(Int, Int)]): List…