lldb_cheat_sheet.md LLDB Cheat Sheet A complete gdb to lldb command map. Print out Print object (lldb) po responseObject (lldb) po [responseObject objectForKey@"state"] p - Print primitive type Breakpoints List breakpoints br l br delete - Delete breakpoint (lldb) br delete 1 br e - Enable breakpoint br di - Disable breakpoint b - Add breakpoint (lldb) b MyViewController.m:30 br set - Add symbolic
nonatomic と atomic の使い分けの指針は次のとおり: 参照型: メモリアドレスのみの書き込みなので、常にnonatomicでよい プリミティブ型: int, BOOL等ワンステップでの書き込みが可能: 常にnonatomicでよい 単一のスレッドからしかアクセスされない: 設計に気をつけつつnonatomic推奨 複数のスレッドからのアクセスがあり、long,構造体などサイズの大きい値: atomic推奨 (thx to @takasek) 複数のスレッドから同時に読み書きが行われる可能性があるプロパティには atomic を指定する。 atomic を指定することで getter と setter が排他的に実行されるようになり、値の書き込みに複数のメモリ操作命令が必要な型(構造体など)が中間状態で読み出されることがなくなる。 atomic を指定してもスレッドセーフにな
今回のサンプルは、 並列処理のサンプルになります。 ##手順 NSOperationのサブクラスを実装する(その際いくつかのメソッドをオーバーライドする) automaticallyNotifiesObserversForKeyクラスメソッド(※1)をオーバーライドする startメソッド(※2)をオーバーライドする(※3) NSOperationQueueをinitメソッドで生成する(※4) NSOperationQueueにaddOperation:する ※1...automaticallyNotifiesObserversForKeyメソッドはKVOに対応するキーを指定するものです。 ※2...startメソッドは、オペレーションがキューに追加された際に自動的に起動されるメソッドです。そしてこの中で処理を書いていきます。 ※3...startメソッドをオーバーライドしない場合は、自動
https://waracle.com/blog/iphone/iphone-nsdateformatter-date-formatting-table/ This blog comes to you for two reasons: our sanity and yours. The number of times I’ve had to google this information only to lose the bookmark or scroll through the 5 mile long page at unicode.org trying to locate the NSDateFormatter string beggers belief and yes, you’d think I would know it off by heart now. So here it
Objective-C Bridging Headerを利用することで、Swiftは既存のいかなるC/Objective-Cコードのシンボルでも呼び出すことが可能になっています。しかしながら場合によってはSwift単体では素直に書きづらいハマりどころがあります。C/Objective-Cのラッパーを作り、Objective-C Bridging Header経由でSwiftから呼び出せば全ての問題は解決できるのですが、面倒くさいですしやはりSwift単体で何とかしたいですよね。そこでここでは素直に書きづらいハマりどころと、それを何とかしてSwift単体で解決する方法をご紹介します。 ※以下の情報は2014/12/19現在のものです。Swiftは言語仕様の変化が激しいので予期せず変更されている場合があります、ご了承ください。
この記事はSwift Advent Calendar 17日目の記事です。 Swiftを始めて、最近では仕事でもいくつか徐々にSwiftに移行し始めています。その中で、時折ObjCを使った黒魔術に出会うことがあります。これらは、ObjCの文化であり、Swiftでもきのこって行けるのだろうかと思いましたので、今回試してみました。 諸説ありますが、自分の中ではObjecitive-Cの黒魔術といえば、つまりObjective-Cのランタイム関数です。 SwiftでもObjective-Cのランタイム関数は利用可能です。ランタイム関数はC言語の関数ですが、Swift自体はC言語との互換があるので使えるんですね。 ランタイム関数を利用するにはObjectiveCという名前のモジュールをインポートします。 ランタイム関数には色々な関数が用意されています。 今回はそのうち最もよく使われているであろう(
Nov 20, 2014 iOS, OSXで利用できるライブラリ管理ツールといえばCocoaPodsが有名ですが、 それとはまた違った方針のCarthageというライブラリ管理ツールがリリースされました。 GitHubのデベロッパーを中心としたチームで開発が進められているようです。 https://github.com/Carthage/Carthage インストール方法 Releasesからpkgをダウンロードして、インストーラーを実行します。 使い方 Cartfileを書く carthage updateを実行する Carthage.buildに作成された.frameworkをXcodeに追加する Cartfileではgithub, gitの2種類のキーワードが利用でき、以下のように書きます。 サポート対象 Carthageはdynamic frameworkのみをサポートするため、C
WKWebViewをinit時にJavaScriptを設置します。設置したJavaScriptはページ読み込みのたびに実行されます。 window.webkit.messageHandlers.yourKeyPath.postMessage("文字列/配列など"); 上記のJavaScriptを使うと、userContentController:didReceiveScriptMessage:が応答するので、yourKeyPath部分をもとに処理できます。 サンプルとして新規作成、"Single View Application"テンプレートからViewController.mに以下を貼り付けると試せます。 結果としてデバッグエリアにUserAgentが表示されるはずです。 #import "ViewController.h" #import <WebKit/WebKit.h> @inte
February 16, 2015 Swiftly Secure, Part 3 – Dividing Huge Numbers Posted in iPhone development, mac development tagged algorithm, division, huge, integer, multi-word, Swift at 9:05 pm by tetontech Let’s face reality. Computer division is ugly. It’s not the case, but it might seem to some people that those who conceived the computers we use today dropped the ball. Addition and Multiplication algorit
ここにまとまってました。 Specifier Description %@ Objective-C object, printed as the string returned by descriptionWithLocale: if available, or description otherwise. Also works with CFTypeRef objects, returning the result of the CFCopyDescription function. %% '%' character %d, %D, %i Signed 32-bit integer (int) %u, %U Unsigned 32-bit integer (unsigned int) %hi Signed 16-bit integer (short) %hu Unsigned 16-bi
SwiftとObjective-Cは相互に呼び合えるらしい。Objective-CからSwiftはすでに記事があった。 SwiftのコードをObjective-Cから呼んでみた - Qiita もしSwiftからObjective-Cのコードを呼べるのであれば、大抵のCocoaPodsライブラリは使い回せることになるので開発者としては大変嬉しい。せっかくなので検証にもCocoaPodsで入れたライブラリを使ってみることにした。 Swiftのプロジェクトを作る 普通に新規作成→Swiftを選んでプロジェクトを作る。なんでもいいのでSingle View Applicationあたりにしておく。 CocoaPodsでライブラリを入れる。 今回はSVProgressHUDを使うことにした。独立しているので簡単に呼び出したりしやすい。 samvermette/SVProgressHUD インストー
数日間iOS8/Xcode6/Swiftな環境で色々試してみて、Swiftを使っていて思ったよりがっかりした点が多かったのでちょっとまとめてみようと思います。 動的な処理がSwiftだけでは一切できない [NSObject performSelector:]の類と、NSInvocationがSwiftからは一切呼び出せません。使おうとすると怒られます。objc/runtime.hは試していませんが、同様に直接Swift経由では呼び出せず間にObjective-Cをかます必要があるのではないかと思われます。 @optionalなprotocolが限定的にしか使用できない 具体的には@objc属性を付けないと使えません。しかしながらこのような後方互換性のためだけに存在する属性をいつまでもAppleがサポートするかは疑問が残るというのと、もう一つ以下の様な問題があります。 @objc属性のついた
Cocoaのマルチスレッド機構について解剖してみました。 実験環境 MacBook Pro Retina, 13-inch, Late 2013 OS X 10.9.2 (Mavericks) NSThread?時代はGCDでしょ! Cocoaには、GCD(Grand Central Dispatch)という新しい並列処理APIが入り、今はこちらを積極的に使うことが推奨されています。とはいえ、CocoaのベースとなっているのはCocoaスレッド(NSThread)なので、NSThreadとNSRunLoopに関する理解は、Cocoaのプログラミングをする上で必須だと思います。 ということで、この記事ではNSThreadを中心に掘り下げていきます。 NSThreadの基本 NSThreadの使い方を簡単に説明すると、適当なクラスに別スレッドで処理するメソッドを用意して、それを適切にinitW
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く