IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Deployment TargetがiOS6.0以上の場合、GCDのオブジェクトもARCの管轄下になるらしいです。 以下のStack Overflowによると<os/object.h>というヘッダに書かれているそうです。 Why is ARC complaining about dispatch_queue_create and dispatch_release in iOS 6? これが適用される場合にはdispatch_releaseなどに対してXcodeが警告を出してくれます。 で、GCDのオブジェクトをプロパティとして持つ場合にどうしたらいいのか、 ちょっと迷ったので、dispatch_semaphore_tを例に書いておきます。 Deployment Targetが6.0未満の場合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
ARCを利用するにあたって基本的な知識があるかを問います。 またこの問題の解決策は一つではありません。 多くの解決手段を回答された方をより高く評価します。
[iOS] 弱参照を扱えるコレクション NSHashTable と NSMapTable | アドカレ2013 : SP #8 この記事の内容は、ARC を有効にしていることを前提としています。 NSHashTable と NSMapTable コレクションと参照カウント オブジェクトに対してアクセスしやすくしたい等の理由で、NSMutableDictionary 等のコレクションに他のオブジェクトがオーナーシップを持っているオブジェクトの参照を格納しておきたいケースがたまにあります。こういった場合、オーナーシップを持っているオブジェクトが対象のオブジェクトを解放したと同時にコレクションからも参照を削除するべきなのですが、削除処理の実装を忘れてしまったり処理が煩雑になったりしてしまいがちです。 NSArray, NSSet, NSDictionary 等のコレクションは、オブジェクトが追加
2012年7月27日金曜日 ARCでのシングルトンパターン Objective-Cでのシングルトンパターンは、AppleのDeveloperサイトで解説されていますが、ARCを前提とした内容ではないので、ARCを使っている場合にはコードを変更する必要があります。変更個所をまとめると以下の内容となります。 1. sharedManagerメソッド内でオブジェクトを生成&初期化していますが、生成したオブジェクトを使用していないので、コンパイル時に警告が出ます。これをさける為に、以下のように、(void)を宣言しておきます。こうすると警告は表示されなくなります。 + (YPostDataManager*)sharedManager { @synchronized(self) { if (_sharedManager == nil) { (void) [[self alloc] init];
[iOS5] ARC : Outletにはweakプロパティを使おう 2011/11/21/|iOS|メモリ管理, iOS5, ARC 今回は、ARCを用いた場合のプロパティ利用に関するTipsです。 ARCって何?と言う方は、まずはこちらからどうぞ。 [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 一般的なOutletにはweakプロパティを使う Interface Builderなどを用いて作成したOutletは、一般的に別のview(例えばUIViewControllerのviewなど)のsubviewであることがほとんどです。したがって、これらのOutletのオーナーとなるのはsuperviewのみで十分だと言えます。 ViewControllerは、自身がOutletのオー
iOS アプリ開発の効率化のため、ARC はますます重要となってくるでしょう。 数多ある ARC 解説の中で、個人的に分かりやすかったリンク(日本語)を集めました。 基本の基本。ARCとは何なのか? [iOS5] ARC (Automatic Reference Counting) : Overview / Natsu's note プロパティに設定する修飾子の解説。 [iOS5] ARC : プロパティ属性と使い方 / Natsu's note IntefaceBuilderを使って IBOutlet 接続する時には weak にする。 [iOS5] ARC : Outletにはweakプロパティを使おう / Natsu's note delegate のポインタを strong 保持すると循環参照になって解放できなくなる。 [iOS5] ARC : 循環参照 / Natsu's not
Summary 新リテラル - NSNumberリテラル,Boxed Expression, NSArrayリテラル,NSDictionaryリテラル, 添字アクセス コンパイラがメモリ管理を肩代わり - ARC (Automatic Retain Count) Cでも無名関数 - Blocks マルチスレッドプログラミングを簡単に - GCD (Grand Central Dispatch) Bundlerライクなライブラリ管理 - CocoaPods はじめに Objective-C のプログラミング環境はどんどん良くなってる コーディングを楽に エンバグの軽減 一方、Web上の記事や書籍のコードは古いまま 古い情報に流されないためにも、新しいコンパイラやツールの機能を確認しておこう NSNumberリテラル void main(int argc, const char *argv[]
iOSについては環境の進化が速く、書籍の内容が古くなっていることがほとんどなのですが Android開発を始めたばかりの僕が読みたかった本が面白かったので自分も似たようなことを書いておきます。 詳解 Objective-C 2.0 Objective-Cのメモリ管理の仕組みであるリファレンスカウンタについて理解するために購入。現在発売中の第3版ではARCについても記載されているので最新のものを買うのが良いです。 Objective-Cの特徴であるカテゴリやプロトコル、KVOについても詳細に記載されているので何度も読み返すことになると思います。 Amazonへのリンク: 詳解 Objective-C 2.0 第3版 iOS開発におけるパターンによるオートマティズム マイナビでiPhoneアプリ開発の連載を持たれていたHMDTさんの書かれた本です。 UIやメモリ管理、実際のモデル設計など盛りだ
iOS 6も発表されて、皆さんARCやBlocksをガンガン使用する感じのプログラミングスタイルに変化してきていると思うのですが、そこで問題になってくるのが後方互換性の話です。特にiOS 4。Blocksを使うとなるとどうしても以下の様に非同期で実行されたBlocksの中からViewを書き換えるようなコードを書きたくなるのですが、 __weak MyViewController *__weakSelf = self; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse* response, NSData* data, NSError* error){ __weakSelf.label.text = [[NSS
書誌情報 著者: 坂本一樹 発行日: 2011-10-13 最終更新日: 2013-09-19 バージョン: 2.0.0 ページ数: 238ページ(A4PDF版換算) 対応フォーマット: EPUB, PDF 出版社: 達人出版会 対象読者 C/C++には詳しいが、Objective-Cには不慣れな人。Objective-Cのソースコードが、実際どのように動くのか知りたい人。iOSまたはMacアプリ開発者 初心者を抜けだして、より深く学びたい人。 著者について 坂本一樹 ソフトウェアエンジニア。twitterアカウントは@splhack。stack overflow reputationは4500以上。 UNIXカーネル/デバイスドライバ/組み込み系ソフトウェアエンジニアを5年 ゲームプログラマを7年 Webエンジニアを1年 モバイル系ソフトウェアエンジニアを4年 本業以外には、NetBSD
strong __strong修飾子に対応するプロパティ属性です。strong属性を用いたプロパティは参照先オブジェクトのオーナーとなります。 weak __weak修飾子に対応するプロパティ属性です。__weak修飾子を持った変数と同様、weak属性のプロパティも、参照先のオブジェクトが破棄されたら自動的にnilが代入されます。weak属性を用いたプロパティはオーナーシップ権を持ちません。 weak属性は、delegateやOutletの変数に最適です。 なお、iOS 4では__weak修飾子が使えないため、プロパティのweak属性も使えません。この場合は、後述のunsafe_unretainedを使いましょう。 copy __strong修飾子に対応しますが、実際にはコピーオブジェクトが代入されます。copy属性を用いたプロパティは参照先オブジェクトのオーナーとなります。 unsafe
Update 10/24/12: If you’d like a new version of this tutorial fully updated for iOS 6 and Xcode 4.5, check out iOS 5 by Tutorials Second Edition! Note from Ray: This is the twelfth iOS 5 tutorial in the iOS 5 Feast! This tutorial is a free preview chapter from our new book iOS 5 By Tutorials. Matthijs Hollemans wrote this chapter – the same guy who wrote the iOS Apprentice Series. Enjoy! This is a
Short answer Instead of accessing self directly, you should access it indirectly, from a reference that will not be retained. If you're not using Automatic Reference Counting (ARC), you can do this: __block MyDataProcessor *dp = self; self.progressBlock = ^(CGFloat percentComplete) { [dp.delegate myAPI:dp isProcessingWithProgress:percentComplete]; } The __block keyword marks variables that can be
iOS5で久しぶりにわくわくしてきたので、ブログの更新が増えるといいですね。ところで、Automatic Reference Counting (ARC) が非常に気になるので、ちょっと調べてみました。英語力とコンパイラについての知識があまり豊富でないので、間違っているところもあるかもしれませんが、ある程度納得できたのでまとめてみます。 Automatic Reference Counting(以後ARC) は、簡単に言うと retain/release を自動挿入する技術で、手動でやっていた参照カウンタを自動でやってくれるものです。したがって、ARCの対象となるのはObjective-Cのオブジェクトとなります。このオブジェクトにはBlocksオブジェクトも含まれますが、Core Foundationのオブジェクトは含まれません。 ARCを使うには、いくつかの制約があります。詳しくはAR
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く