2012年11月17日土曜日

2012年11月13日火曜日

NSStringのretainCountが異常な値になる件について

NSStringのretainCountをNSLogでデバッグ出力すると、たまに異常に高い値で返ってくることがあるのでそのメモ。

2012年11月11日日曜日

各OSのバージョンのipswファイルをダウンロードできるサイト「getiOS.com」



Download iOS Firmware - getiOS.com

ipswファイルをダウンロードするには、端末、モデル(世代)、OSのバージョンを選択します。

ファイルはAppleのサーバからダウンロードしてきているようです。

ipswファイルは、公式のiOS Dev Centerから普通に落とせるのですが探すのが少々手間なので情報共有として。

インスタンスにnilを入れたら0が返るが参照カウント自体が0になる訳ではない

インスタンスなんかにnilを格納すると必ず0が返るのですが、その際、参照カウント自体が0になる訳ではありません。当たり前のことですがメモで。

2012年10月30日火曜日

2012年10月27日土曜日

2012年10月21日日曜日

メモリ管理について個人的なまとめ1

Objective-C では「参照カウンタ」という方式でメモリ管理をしています。こういった直にメモりを弄るのは個人的にはじめてのことだったので個人的にまとめてみます。

2012年9月30日日曜日

高速列挙でエラー「Collection was mutated while being enumerated.」が出た

高速列挙を使い配列から特定の文字列を削除しようとしたら「Collection was mutated while being enumerated.」というエラーが出たのでメモで。

CGPointを配列に格納する

CGPointを配列に入れる方法をメモで。

BOOL型の値をを三項演算子でデバッグ出力する

BOOL値は%d書式を使って普通に出力できるのですが、三項演算子の使い方も併せてのメモということで。

2012年9月26日水曜日

アプリを起動しているデバイスの機種判定

アプリを起動しているデバイスの機種判定の方法について。iPhone5が発売されてデバイスの解像度の種類も増えたのでメモしておきます。

2012年9月23日日曜日

Xcode4.5で以前のXcodeのプロジェクトをシミュレータで起動するとiPhone5の解像度に合わせて表示される

以前のXcodeで作成したプロジェクトをXcode4.5で開きシミュレータ(iOS6)でデバッグしたところiPhone5の解像度に合わせて以下のように表示されました。



以前のiPhone4の解像度は960 x 640ピクセルですので、iPhone5の1136 x 640ピクセルの解像度に無理矢理表示しているような形でしょうか。

応急処置になるか分かりませんが、Xcodeの「iPhone/iPod Deployment Info」にあるアプリのローンチ画像を設定する「Launch Images」で4-inch用の画像を設定します。



これを行うと、ビューが最上部、座標で言えば(0, 0)を基準に表示されます。ですが表示しているのはiPhone4の解像度ですので、下に空きができてしまします。

おわり

もちろんこのままでも動きますが、今後のことを考えて以前のiPhone4の解像度でアプリを作成していた人は早いところiPhone5の解像度に対応させたほうがいいかと思います。

Xcode4.5でiPhone5用の解像度でデバッグする方法

iPhone5から解像度が1136 x 640ピクセルになりました (参考)。その解像度に合わせてデバッグするにはiOSシミュレータのメニューから以下のように設定します。

ハードウェア → デバイス → iPhone (Retina 4-inch)

OSのバージョンの取得と振り分け

OSのバージョンの取得と振り分けについてのメモ。

インスタンス変数はヘッダーファイルではなく実装ファイルで宣言すべき?

インスタンス変数の宣言は前まではヘッダーファイルで行っていたのですが、どうやら実装ファイルでの宣言が正しいようです。

モーダルビューを使いビューを表示させる

現在表示しているビューから一時的に異なるビューを表示するのに使用するモーダルビューの呼び出し方についてもメモ。

2012年9月22日土曜日

FMDBの基本的な使い方

iOSでSQLiteを容易に利用できるようにするライブラリ「FMDB」の基本的な使い方をメモで。

2012年9月17日月曜日

iOSに搭載されているフォントをまとめたサイト「iOS Fonts」



iOS Fonts

iOSに搭載されているフォントをまとめたサイト「iOS Fonts」。iOS6で新たに追加されたフォントも確認できます。便利なサイトでしたのでメモで。

おわり

使用できるフォントは以下のようにプログラムからでも確認できます(引用元)。
for(NSString * familyName in [UIFont familyNames]){
    NSLog(@"%@", familyName);
    for(NSString * fontName in [UIFont fontNamesForFamilyName:familyName]){
        NSLog(@"-%@", fontName);
    }
}

スマートフォン広告相関図「Smart Phone Ad SPA」



Smart Phone Ad SPA

スマートフォン広告の相関図を閲覧できる「Smart Phone Ad SPA」。スマートフォン広告の比較検討に便利そうです。面白いサイトでしたのでメモで。

エラー「Icon specified in the Info.plist not found under the top level app wrapper: iconname.png」

コンパイル時に「Icon specified in the Info.plist not found under the top level app wrapper: iconname.png」というエラーをはきました。

2012年9月9日日曜日

ネットワークの接続状況を確認するライブラリ「Reachability」

現在のネットワークの接続状況が3G、WiFi、もしくは圏外なのかを確認する際に便利なのが「Reachability」というライブラリです。

NSMutableArrayにint型やfloat型のデータをいれる方法

NSMutableArrayなどの配列にint型やfloat型のデータを入れる方法をメモで。

一般公開「iPhoneアプリ初級脱出Online:高橋政明」



一般公開「iPhoneアプリ初級脱出Online:高橋政明」

MOSADeN Onlineで公開されているiPhoneアプリ開発に関してまとめられた「iPhoneアプリ初級脱出Online」です。

"初級脱出"だけあって詳細な説明が載っています。

少し古い記事ですが情報共有として。

CALayerをビューに追加したときの順番について

CALayerをビューに追加したときの順番に関して調べたのでメモ。

2012年8月21日火曜日

iPhone、iPod touch、iPad デバイスの機種判定

アプリを起動しているデバイスの判定方法をメモで。

アプリの平均審査日数が分かるサイト「Average App Store Review Times」



Average App Store Review Times

アプリの審査平均日数が閲覧できる「Average App Store Review Times」。

平均日数はTwitterのハッシュタグを利用して計算しているようです。

最近Appleの審査が長くなっていると騒がれているので、このサイトを参考に審査の平均日数を確認してみるのもいいかもしれません。

2012年8月5日日曜日

当たり判定で遊んでみる

Objective-Cで当たり判定で遊んでみたくなったのでちょっと作ってみました。

タッチした座標に画像を移動させる

タッチイベントに関して少し調べたのでメモで。今回はタッチしたところに画像を移動させた際の覚え書きです。

2012年7月23日月曜日

UINavigationControllerのアイテムを切り替える

UINavigationControllerのアイテムをタップすると違うアイテムに切り替えたいと思いちょっと作ってみました。今回はリフレッシュボタンを押したらインジケーターをくるくる回して、再びリフレッシュボタンを表示させるようなものを作りました。

2012年7月21日土曜日

2012年6月30日土曜日

「Couldn't register xxx with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger.」

実機で動かそうとすると以下のエラーが出て実機テストできないことがあったのでその原因を書きます。

「Couldn't register xxx with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger.」

原因

コンパイル中にXcodeが強制終了した場合に起こるようです。その際に、iPhone側に実行中のステータスが残っており、iPhone上に同一アプリをインストールしようとしている状態になりアプリが起動できないということのようでした。

参考記事

iPhoneでアプリケーションインストール中にエラーとなった場合の対処 - iPhoneアプリ開発備忘録

UIBarButtonItemの色を変更する方法

UIBarButtonItemの色を変更する方法をメモで書きます。

「東京渋谷 cocos2d for iPhone 勉強会」の資料

「東京渋谷 cocos2d for iPhone 勉強会」で使用したスライドをメモで貼ります。少し前のスライドですがメモで。

「Unknown class クラス名 in Interface Builder file.」エラーについて

コンパイル時「Unknown class クラス名 in Interface Builder file.」というエラーが出たのでその対処方法を書きます。

UIAlertViewのテンプレート

UIAlertViewを使う機会が多いのでテンプレートをメモで。

プロパティについて

インスタンスへアクセスする時のルールを決定するために使用する「プロパティ」のオプションの組み合わせを簡単にメモします。

2012年6月10日日曜日

cocos2dで始めるiPhoneゲーム開発入門

cocos2dを使ったiPhoneゲーム開発入門用スライドです。cocos2dでゲームを作りたいと考えている方は見ておいてもいいかと思います。

「Local Declaration of "xxx" Hides Instance Variable」というエラーについて

コンパイラ時に「Local Declaration of "xxx" Hides Instance Variable」というエラーが出ました。

原因

ローカル変数とインスタンス変数の名前が同じであったために出たエラーのようです。ローカル変数とインスタンス変数の名前は異なる名前を付けなければならないようです。

参考記事

‘Local Declaration of "●●" Hides Instance Variable’コンパイラ警告の回避方法 - さくらのあたま

UINavigationBarの背景色を変更する

UINavigationBarの背景色を変更した際の覚書きです。

UITableViewCell タップ時のハイライトを無効にする

テーブルのセルをタップした際にハイライトするのを無効に設定した際の覚書きです。

UIViewに枠線を付ける

UIViewに枠線を付けた際の覚書きです。

2012年6月3日日曜日

UIView、UIWindow、UIViewControllerについて

UIView

画面上に矩形エリアを定義し、その領域の描画やイベント処理などの機能へのインターフェースを提供します。このクラスそのものはその領域を背景色で塗り潰すだけで、実際の処理はUIViewクラスを継承するクラスのオブジェクトにより実行されます。

UIView - iPhoneアプリ開発の虎の巻
UIView - 福井高専IT研究会OfficialWiki

UIWindow

アプリケーションが画面に配置するウィンドウを表すクラスです。ウィンドウはその中にビューを配置する領域を提供し、ビューの階層のルートとして機能します。通常はiOSアプリケーションには1つのウィンドウしかありません。

UIWindow - iPhoneアプリ開発の虎の巻
UIWindow - 福井高専IT研究会OfficialWiki

UIViewController

ビューをコントロール・管理するのがこの「UIViewController」の仕事で、プロパティとしてビューそのものを持っており、そのビューの表示などをサポートします。このクラスを継承するクラスにはUINavigationControllerやUITabBarControllerなどがあります。

UIViewController - iPhoneアプリ開発の虎の巻
UIViewController - 福井高専IT研究会OfficialWiki

まとめ

"UIWindow"の中に"UIView"が1つまたは複数あり、その"UIView"を管理するのが"UIViewController" という解釈でよさそうです。

参考書籍

Objective-C プログラマーズバイブル

2012年5月28日月曜日

2012年5月25日金曜日

非同期の画像読み込みライブラリ「LazyTableImages」と「ImageStore」

画像を非同期で読み込む処理が必要になったので調べるとタイトルになっている以下の2つが良さそうでしたのでメモとしての残しておきます。

2012年5月24日木曜日

ナビゲーションバーにボタンを表示させる

ナビゲーションバーにボタンを表示させる際の覚え書きです。ボタンを表示させるには「UIBarButtonItem」クラスを使います。

2012年5月23日水曜日

インスタンスの作成

インスタンスの作成について簡単にまとめます。

クラスの中身:実装ファイル「.m」

Objective-Cの実装ファイルはインターフェースファイルで宣言した中身を記述します。拡張子は「.m」になります。

2012年5月13日日曜日

クラスの宣言:インターフェースファイル「.h」

Objective-Cのクラスの宣言はインターフェースファイルに記述します。インターフェースファイルは変数や関数のプロトタイプ宣言記述したC言語で言うヘッダーファイルのようなもので拡張子は「.h」になります。

ポインタについて

ポインタについて個人的にまとめてみます。

2012年5月6日日曜日

セルに画像を表示させるときの覚書き

セル内に画像を表示させるときの覚書きです。

プロジェクトにResourcesフォルダを追加する

Xcode4.3.2ではデフォルトでは画像などを管理する Resourcesフォルダ がなかったので追加する方法をメモで書きます。

ImageViewの画像を元画像の縦横比を維持したまま表示させる

インスペクターウィンドウをAttributes(属性)に切り替え、View項目のMode属性を「Aspect Fit」にする。

参考書籍

つくって覚えるObjective-C入門 iOS対応

キャンセルボタンをタップしたときにキーボードを隠す

searchBarCancelButtonClicked:メソッドでキャンセルボタンをクリックしたときにキーボードを隠す方法をメモで。

文字列を別の文字列に置換する

文字列の置換には stringByReplacingOccurrencesOfString:メソッドと replaceOccurrencesOfString:メソッドの2種類で行うことができます。

2012年4月23日月曜日

warning: 'クラス名' may not respond to '-メソッド名' エラーについて

Xcodeのナビゲーターウィンドウの警告ウィンドウに以下のようなエラーが表示されました。

warning: 'クラス名' may not respond to '-メソッド名'

これはヘッダファイルにメソッド定義がされていない場合に起こるエラーのようです。ヘッダファイルに適切な定義を書くことでエラーは消えました。

「unrecognized selector sent to instance」エラーについて

コンパイル時に以下のエラーが返ってきてアプリが落ちてしまいました。

-[DetailViewController parseXMLFileAtURL:]: unrecognized selector sent to instance アドレス'

原因

以下の参考記事から、呼び出そうとしたメソッドがなかった場合に発生するエラーのようです。案の定 parseXMLFileAtURL:メソッドを書き忘れていました。追加したところエラーは消えました。

参考記事

iPhone実行時のエラー:unrecognized selector sent to instance xxxxxxxxx | SE & Programmer's Blog

2012年4月22日日曜日

文字列連結

文字連結について備忘録で書きます。

UIPickerViewで「Terminating app due to uncaught exception 'NSRangeException', reason:」でアプリが落ちる

UIPickerView関連を使ったプロジェクトをコンパイルしたところ以下のエラーが返ってきました。

「Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 100 beyond bounds [0 .. 99]'」

原因

ピッカーの列のセル数を設定する pickerView: numberOfRowsInComponent:メソッドで返した値と、ピッカーの表示内容にを設定する pickerView: titleForRow:メソッドで返した値(数)が一致しない場合に発生するようです。

深く調べた訳ではないのですが自分はここを調整したところエラーは消えました。

int型からNSString型へ文字列変換する

int型からNSString型へ型変換するときの覚書きです。

2012年4月19日木曜日

Tabbed Applicationプロジェクトで画面遷移させたときのメモ

Tabbed Applicationプロジェクトで画面遷移をさせたときのメモ。

「Duplicate declaration of method メソッド名」エラー

コンパイル時に以下のようなエラーが出ました。

「Duplicate declaration of method メソッド名」

このエラーはメソッドの重複におこるエラーのようです。重複しているメソッドを消すことでこのエラーは消えました。

参考記事

xcode error2 | SE一年生

関連記事

Objective-C(メソッドのオーバーロード)| Selection 9
UIAlertView buttonClickedAtIndex Duplicate Declarations | Stack Overflow

2012年4月18日水曜日

Apple Mach-O Linker (id) Error clang: error: linker command failed with exit code 1 (use -v to see invocation)について

「linker command failed with exit code 1 (use -v to see invocation)」エラーに遭遇したので備忘録で書きます。

このエラーの原因はいろいろとあるようです。エントリーの最後に他の原因のものに関する記事のリンクも載せておきました。

原因

違うクラスで同じ変数を使用していた

ログをよく見ると

ld: duplicate symbol _OBJC_IVAR_$_BaseView.selected in ・・・

となっていました。

自分はAクラス、Bクラス両方で同じように「@class BaseView」というクラスを宣言していました。この場合だと2つのクラスで1つの変数を使用してしまっていることになります。これだと怒られてしまうので、どちらかを例えば「@class BaseView2」にするなどして対処します。

参考記事

iPhoneアプリを作ってみよう:第3回 タイマーアプリ(#2.ストップウォッチ作成編)- コメント | もとまか日記

関連記事

duplicate symbol エラー | プログラミング雑記
Xcodeのわかりにくいエラーメッセージ | migihidariの日記
Apple Mach-O Linker (id) Errorについて | iPhoneアプリ開発メモ

2012年3月25日日曜日

はじめに



皆さん おはようございます、こんにちは、こんばんは!!
maezonoです。はじめまして。

このブログの説明を間単に

このブログはObjective-C全くの初心者がアプリ開発のために日々学んだことや躓いた部分などを書いていくブログです。

Objective-Cを学んでいくにあたって

私はプログラミングは全くの初心者ではないです。PHPやActionScriptなどを触ってきました。ですがこのObjective-Cなんですが、参考書をパラパラと見ていたのですが「なにコレ」というのが第一印象。結構独特の書き方ではじめは全く分かりませんでした(笑)あとC言語の知識もある程度必要だとか。ここにきて長年C言語を避けてきたツケが回ってきました...(涙)

といいことで参考書

参考書は色々と調べた結果、上のトップ画像にもなっている以下の2冊を購入しました。


購入した参考書について説明

まずは1つ目「よくわかるiPhoneアプリ開発の教科書【iOS 5&Xcode 4.2対応版】」です。こちらは全体的にXcodeの説明が主な内容になっている印象を受けました。Xcode4.2から実装された「StoryBoard」を使ってサンプルを試しながら進めていきます。こちらの参考書は一通り読み終えました。

次に2つ目「Xcode 4ではじめるObjective-Cプログラミング」です。こちらはObjective-Cの説明が主な内容になっている印象を受けました。丁寧な解説で非常に読みやすいです。こちらはまだ読んでいる段階です。

今は以上の2つで学習を進めています。参考書で解決できないことはその都度WEBで調べながらといったところです。

最後に

打倒オブシー(Objective-C)に向けてこれから精進していきます!

それでは今日はこの辺で。