objective-c小ネタ集【自分が困ったときの備忘録】


僕の投稿備忘録だらけだなと思う今日のこのごろ。


最近使った技やネタを纏めておきます！
気にせずごゆっくりどうぞ...


## Xcodeでプロジェクト名を変更する方法

[Xcodeでプロジェクト名を変更する方法](http://qiita.com/284km/items/2cca044af2085ee8df6b)

ここの記事の方も書いておりますが、
Sampleで無計画に作り進めてたら、これが本番でいいじゃん。

となった時の処理に便利です。


## Bundle Identifierを変える方法

[Bundle Identifierを変える方法](http://webhoric.com/apple/mac/xcode-mac/change-bundle-identifier)

TitaniumからiOSアプリに移植する際に使用した技です。
既に利用しているBundle Identifierを使いたい！
という時にはxcodeの自動で入力される部分が本当に邪魔ですよね。

##あれ？いつもとちょっと違う？MVC

[CocoaにおけるMVCについてちょっと勉強してみた](http://blog.morizotter.com/2014/01/03/mvc-of-cocoa/)

アプリ開発をする前はPHP等を触っておりました。
その際にMVCの考え方に触れたのですが
・モデル＞データベースのやり取り
・コントローラー＞モデルからデータを獲得する。APIを叩く。イベントに対応する。
・ビュー＞html的な部分
のような物だと把握していました。

しかし、objectve-cというかcocoaフレームワークが提供しているMVCは
・モデル＞内部情報の取得。外部情報の取得。
・コントローラー＞モデルからデータを獲得する。イベントに対応する。
・ビュー＞html的な部分
のような感じでした。APIもモデルで叩いて、データをコントローラーに渡しているようでした。

前述がそもそも間違ってるよ。
とか、後述も間違ってますよ。
など有れば教えてください...（苦笑）

##addsubviewしたものの順序を切り替える

[UIView を最前面・最背面に移動する](http://www.hnyssh.net/?p=67)

```
[self.view bringSubviewToFront:frontView];    // frontView を最前面に移動
[self.view sendSubviewToBack:backView]        // backView を最背面に移動
```

ほんのこれだけなんですが地味に探しにくかったので共有です。

##なんでobjective-Cのディクショナリー型はint使えないの！

[NSMutableArrayにint型やfloat型のデータをいれる方法 ](http://obc-fight.blogspot.jp/2012/09/NSMutableArray-NSArray-NSDictionary-add-int-float-data.html)

PHP出身だと配列などを扱う際にkeyやvalueとなる部分に普通に数値が使えなくて正直焦りました。
NSNumberってなんだよ！(未だに慣れない)

丸々コピペですが

```objective-c
//取り出す時
int i_val = [[arr objectAtIndex:0] intValue];
```

この部分。NSNumberをまたint型に戻せるというのも大きな発見でした。
ありがたし。


##WebViewした時のUserAgentに細工したい。

[UIWebViewを用いる際にUserAgentを独自に設定する方法
](http://www.yoheim.net/blog.php?q=20121001)

ちょっと仕掛けとして、スマホアプリのWebViewでつなげてますよと言うのを
手っ取り早く判別させるのに便利です。


##UITableViewの更新いろいろ


[UITableViewの更新いろいろ](http://www.happytrap.jp/blogs/2011/06/11/5108/)

差し込んだり、順番変えたりのギミック利用するときに
いちいち全更新するのはなんか無駄ですよね。
狙って更新できるのが一番よいです。（まぁ大抵全更新なんですけど...)

##データの保存のいろは

[iOS開発でデータの保存をする](http://qiita.com/edo_m18/items/4d4f1e2b7c2b790039b1)

色んなデータ保存の方法が有りますよね。
開発し始めて最近UserDefultなんて物があるのに気づいて、
凄く感動しました。（周りからはなんで知らないのと驚かれました（苦笑））

##UIwebViewで表示されているアンカーのクリック時にイベントを差し込む

[UIWebView内のリンクをSafariで開く](http://php6.jp/iphone/2011/12/06/uiwebview%E5%86%85%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92safari%E3%81%A7%E9%96%8B%E3%81%8F/)

ちょっとトリッキーな技ですが今回の開発で使う場面が有り、
重宝した技です。
特にこの部分

```
if([scheme compare:@"http"] == NSOrderedSame) {
```

ここを上手く条件を使うことで
WebViewで表示させた物を色々分岐させてイベントアプリから差し込むことが出来ます。

##UserDefultってどれくらい保存できるの？

[意外にパワフル！？NSUserDefaultsの書き込み、読み込み速度について](http://qiita.com/yuky_az/items/13dfc156db118db04f17)

あまりデータを本尊し過ぎるとパフォーマンスが落ちそうな保存先、UserDefult。
それがどれほどのデータ通信に耐えられるか試してみたという記事。

##マウスカーソル超見づらい...でも、黒背景やめれない。そんなあなたに。

[Xcodeで黒背景を使う場合にカーソルを目立たせる方法](http://sayahamitt.net/xcode%E3%81%A7%E9%BB%92%E8%83%8C%E6%99%AF%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88%E3%81%AB%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%82%92%E7%9B%AE%E7%AB%8B%E3%81%9F%E3%81%9B%E3%82%8B%E6%96%B9/)

これを求めていました。

> /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/DVTIbeamCursor.tiff

ここにxcode上のカーソルの画像が置いてあるので、
これを変更することで見やすい好きなカーソルに変更できるというものです。



##まとめ

ぐぐれは何でも出てきます。
この記事が色々調べるきっかけになれば幸いです。
なにかよい情報がありましたらコメントで教えて頂けると
僕も勉強になって助かります！

それでは。