日本語ドキュメント 日本語に翻訳されたiOS/watchOS/tvOSのドキュメントです。 英語版の方が新しい場合がありますので、更新日を確認して下さい。 エンタープライズ環境での運用に関するドキュメントはこちらに移動しました。 App Store Connect ヘルプ タイトル 日付
ついに明らかになった、iPhoneアプリのリジェクト基準条項。 Engadetが公開したPDFをベースに、リアルタイムに更新中。 とりあえずリアルタイムに翻訳を作成中。 おもいっきり意訳なので、間違いの指摘や突っ込みはコメント欄かTwitterでお願いします。 <このリストは、2010年9月10日現在のものです。また意訳なので、気になる条文は原典をチェックすること。> 2. 機能 2.1: クラッシュするアプリはリジェクト。 2.2: バグのあるアプリはリジェクト。 2.3: 開発者の申請したものと違うアプリはリジェクト。 2.4: アプリの紹介文にない隠し機能を持つアプリはリジェクト。 2.5: 非公開のAPIを用いたアプリはリジェクト。 2.6: サンドボックス外のデータを読み書きするアプリはリジェクト 2.7: 実行コードを外部からダウンロードするアプリはリジェクト 2.8: 他の実
タイムスタンプなどの用途に、 UNIX 時間( UNIX エポック[=1970年1月1日0時0分0秒]からの経過秒数)のミリ秒版 ( = UNIX エポックを起点としたシステム時間(システム時刻)をミリ秒で表現した値) を取得する方法です。 例えば Java では System.currentTimeMillis() といったメソッドでさくっと取得できるのですが、Objective-C ではいくつか注意点があります: 時刻取得関数 CFAbsoluteTimeGetCurrent() は2001年1月1日を起点としています CFAbsoluteTimeGetCurrent() は整数部分を秒とした小数値( CFAbsoluteTime 型 = double 型)を返します 1970年1月1日から2001年1月1日までの経過時間の値が定数 kCFAbsoluteTimeIntervalSin
iOS 5.1 では UIScrollViewにバグがあるようで慣性スクロールが終わるタイミングで少しずつメモリがリークしてしまうようです。 UIScrollView を継承している UITableView や UITextView も同じ不具合が発生します。 内部に UIScrollView を保持している UIWebView も同様です。 Xcode 4.3.1 の Single View Application に下記のコードを追加しただけのアプリケーションと Instruments の Leaks を使用して検証しました。 - (void)viewDidLoad { [super viewDidLoad]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32
静的にチェックするツールはあるものの メンバ変数上のものをallocなどを行っている場合はチェックができないので 結果的にメモり管理とは何ぞやとという部分を理解していないといけない訳です。 で、UINabigationControllerにUITableViewを追加したり戻したりしてると 全然メモリ開放がされないので調べてみました。 1.TableViewのCell設定方法の問題 UITableViewControllerのプロジェクトを作成すると 以下のようなコードが自動登録される訳なんですけども // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)inde
Test, 雑感, iPad, iPhone, Objective-Cテストを書く事でおこるいい事は、いろんなところで解説されているので、iOS開発に限ったもので、わりと僕の中でキたViewControllerについて。ViewContollerがデータを所持しているケーステストをしていく上で課題になるアプリケーションテスト。iOSアプリケーションなので必ずビューが存在するわけですが、こいつを操作するViewControllerが非常に厄介な存在になってくる。少なくともApple公式のドキュメントのような書き方をすると、すぐに破綻する。例えば、こういうコードをよく書くと思いますが、この時に描画されるデータが正しいかをテストする為だけに複雑で手間のかかるアプリケーションテストをする必要があるでしょうか。 - (UITableViewCell *)tableView:(UITableView
iOS/Macアプリ開発者。「Metronome PRO」などを作成。 書籍「iOS4プログラミングブック」「cocos2d for iPhoneレッスンブック」を執筆(共著)。 「cocos2dで作る iPhone&iPadゲームプログラミング」では監修を担当。 他にもいくつかのiOSアプリ開発本で査読を担当しました。 iOS5ではiOS4以前と異なり、スクリーンロックが「Background」状態として扱われるようになりました(従来はSuspended状態)。そのため、「バックグラウンド再生はしないけれどスリープ中はサウンドを鳴らし続ける」というアプリが軒並みスクリーンロックで音が消えるようになってしまっています。 Metronome PROも同様で、現在のバージョン(4.0.4)では設定タブで「スリープ中の再生」をON/OFFしても効果がなくなってしまっています。 これに対して
はじめに このエントリは、メモリ管理でミスしないために - ASとかの説明です。同時に開きつつ見て下さい。 viewDidUnloadとは deallocについての認識がずれていたケースは今まで無いのですが、viewDidUnloadについては、そもそも実装している人をあまり見かけません。しかしこれは大変な間違いで、メモリが足りなくなった際に優先的に解放されるべきオブジェクトが解放されないケースが出てきます。 deallocで破棄すべきオブジェクト ここは問題ないと思っています。外から代入されたオブジェクトや、retain保持していたオブジェクト等を解放してあげて下さい。 viewDidUnloadで破棄すべきオブジェクト タイミング まずviewDidUnloadが走るタイミングですが、これはメモリ不足が起きた際、didReceiveMemoryWarningメソッドから呼び出されます。
Mac と iOSでIBOutletの作り方が違うけど、ドロップで作れば、それぞれ適切なコードを生成してくれる。 In Mac OS X @property (assign) IBOutlet NSButton *button; In iOS @property (nonatomic, retain) IBOutlet UIButton *button; Memory Management of Nib Objects 対象のコントロールをマウスの右ボタンを使用して、ヘッダへドロップする。 (この際、中括弧外にドロップするとプロパティが生成される。中括弧内にドロップすると、プロパティは生成されずに、インスタンス変数で生成される。どちらにドロップするかで、viewDidUnloadでの処理も変わる。) ドロップするとプロパティ名の入力を促されるので、任意に入力してConnect。 すると
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
iPhone開発ネタ。 UIImagePickerController を使用して、写真を撮れるようにしたのだが、(実機の動作確認で)メモリ警告が発生して落ちまくった。。 それまで、メモリ警告は特に意識していなかったが、UIImagePickerController はメモリをいっぱい使うのだろう。(あと、iOS4にしてからマルチタスクなのでアプリ残骸が多々あるせいでもある。。きっと。) まずハマったのが、なぜ落ちるのか。当然、既に存在しないアドレスにアクセスしてるからだろうが、どこだ?? 地道にコールスタックでどこまで処理が呼ばれているか確認していき、ようやく発見。 これは単純なミスだった。release し過ぎて、dealloc でコケていただけ。 次に、カメラ起動後、メモリ警告のせいで、ビューが初期化されてしまい、設定していた値が初期値に戻ってしまう問題。 考えた対処方法は、didR
2010-12-22 iPod touch/iPhoneアプリ開発wiki 2010-09-24 iPod touch/3. 実機転送とテスト/(3) 実機への転送 2010-06-21 iPod+touch/3.+実機転送とテスト/(3)+実機への転送 2010-01-12 iPod touch/5. サンプルアプリ集 2010-01-11 iPod touch/6. App Storeでの公開に向けて/(1) 公開への準備 RecentDeleted iPod touch/6. App Storeでの公開に向けて iPod touch 2010-01-04 iPod touch/3. 実機転送とテスト/(2) 証明書のダウンロードとインストール iPod touch/3. 実機転送とテスト 大まかな説明 † iPhone SDKにおいて2Dや3Dを取り扱うには2つの方法があります。 S
今回はCanvasView側アプリの作成。 カスタムUIViewであるCanvasViewで受け取ったタッチイベントに合わせて事前に用意しておいた画面外描画領域(オフスクリーンというのじゃよ)に線を描画し、このオフスクリーンをCanvasViewで逐次描画してやればお絵描きソフトができるわけざんす。 カスタムUIViewの作り方はドリル:画面へのタッチを検出する(1)を参照ね。 でもって、カスタムUIViewの内容部描画方法はドリル:カスタムUIViewの内容部を独自に描画するを参考にして下さい。 ただ~し、上のドリルだとオフスクリーンをどうやって画面に描画するかはわからない。 オフスクリーンの作り方や、CGContextRefへの描画方法は「その(175)」を読むとして、ここで使ってるCGContextDrawImageを実行するために必要なラストワンピース、CGContextRefを取
iOS 4 以前で RGB を取得する場合 UIColor が保持している RGBA の値を取得するには、iOS 5 よりも前であれば、CGColorGetComponents 関数を使用します。 この関数は、RGBA の 4 つの値をそれぞれ CGFloat 型で順に const CGFloat* 型の C 配列で返すのですけど、RGB の値が一緒の場合(たとえば白 [R=1.0, G=1.0, B=1.0] や黒 [R=0.0, G=0.0, B=0.0] の場合)には、それらがまとまれて、それらと A との 2 つだけが帰ってくるのが厄介です。 戻される配列の数は CGColorGetNumberOfComponents 関数で取得することができるようになっているので、それらを使って次のように RGBA の値を取得する感じになると思います。 CGFloat red; CGFloat
メモリ警告によってViewが破棄された場合、UITableViewのスクロール位置はリセットされてしまう。再度Viewが読み込まれたときに元の位置に戻すには、破棄される直前のスクロール位置を覚えておく必要がある。だいたい次のようなコードになる: ScrollTestViewController.h #import <UIKit/UIKit.h> /* UITableViewControllerではなくUIViewControllerを使っている理由は後述 */ @interface ScrollTestViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> { /* UITableViewはIBOutletでretainする想定 */ UITableView *_tableView; /*
UIToolbarのアイテムを状況によって切り替えたい時がある。 そんな時はUIToolbarのsetItemをまた呼び出せばいい。 以下がサンプルコード。 /** * Toolbarのボタン1軍 */ - (void)setBarButtonItems1 { UIBarButtonItem *barButtonItem1 = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(buttonEvent1:)]autorelease]; UIBarButtonItem *barButtonItem2 = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarBut
最近始めて知りました。 そうです。UIPageControlの使い方です。 【今までの勘違い】 ・UIPageControlだけでページングは実装できる ・UIPageControlに数枚のviewを乗せることによってページングが可能となる 【今回わかったこと】 ・ページングはUIScrollViewにて実装する ・UIPageControlは各ページviewとは別物で、ただのページ(ページ数・現在ページ)である ・UIScrollViewとUIPageControlを紐付けてあげることで、わかりやすいページングが実装できる iPhoneのホーム画面を見ていると、どうしても各ページとその下のページを示す点はもともと関連があるものだと思えてしまうのですが、そうではなかったようです。 以下、試しに書いたサンプルソース。 PageControlBaseView.h #import <UIKit/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く