ObjecTips

Swift & Objective-C で iOS とか macOS とか

2015-01-01から1年間の記事一覧

OSType, FourCharCode から NSString への変換

いろいろデバッグしていて OSType や FourCharCode を扱う事があるので備忘。 OS Xだと Foundation.framework に NSFileTypeForHFSTypeCode という便利な関数が用意されている。 この関数はシングルクォーテーションで囲われた文字列を生成する。 OSType typ…

ナビゲーションバーを透明にする transparent UINavigationBar

サンプルとして UINavigationController の rootViewController に UITableViewController を設定したものを使う。 UINavigationItem に適当にボタンを設定して UITableView の tableViewHeader に UIImageView を aspectToFill で入れて画像を設定。 Storyb…

Swift で書かれたアプリを配信すると起動時にクラッシュ

Swfit で書いたアプリを配信すると起動時にクラッシュするケースがある。 Apple の以下のドキュメントで言及されている。 原因は証明書で、iOS 8とSwift 登場以後の証明書には 部署 Organizational Unit (OU) が付与されるようになっていて、これが無い証明…

iOS 9 での言語の identifier の変更

AppleからiOS 9の言語の identifier の変更についてドキュメントが公開されていた。 NSLocale.preferredLanguages() が返す値がiOS 8以前とiOS 9以降とで異なっていて、 以前は en だったものが en-US というように言語 Language と地域 Region がハイフンで…

AppleScript の JavaScript for Automation で Excel から JSON ファイルを作成する

これまでの記事 AppleScript の JavaScript for Automation で Excel のセルの値を取得する - ObjecTips AppleScript の JavaScript for Automation でテキストをファイルに保存する - ObjecTips AppleScript の JavaScript for Automation でテキストをファ…

AppleScript の JavaScript for Automation でテキストをファイルに保存する Objective-C Bridge編

前回の記事 AppleScript の JavaScript for Automation でテキストをファイルに保存する - ObjecTips 前回は AppleScript の StandardAdditions を使ってテキストファイルの書き出し保存を行ったが、 まずどんな関数があるのか、そして関数の引数や実行時の…

AppleScript の JavaScript for Automation でテキストをファイルに保存する

StandardAdditions を使用する 保存ダイアログを表示するには StandardAdditions ライブラリに入っている chooseFileName 関数を使う。 JavaScript for Automation では StandardAdditions を使う前に includeStandardAdditions を有効にしてこのライブラリ…

AppleScript の JavaScript for Automation で Excel のセルの値を取得する

環境 OS X 10.10.5, Microsoft Office 2011, Microsoft Excel 14.5.4 AppleScript の JavaScript for Automation を使用 準備 スクリプトエディタを起動 ライブラリに Excel を追加して AppleScript のリファレンスライブラリを参照できるようにする。 エデ…

iOS 8.0.2 iPad で Could not load NIB in bundle

クラッシュレポートにいくつか Could not load NIB in bundle のエラーが上がってきていたので調べてみた。 発生しているのはいずれも iOS 8.0.2 で機種は iPad Air, iPad mini 2 が確認された。 アプリ自体は iPhone のみ対応しているアプリで、iPhone では…

AdMob SDK 7.4.1

AdMob のリリースノートのページをGoogle検索経由で探して開くと以下のURLが開く。 https://developers.google.com/admob/ios/rel-notes?hl=ja 最新版は 7.3.1 か(現時点)。なんて思ってたら実はロケールを en にして英語表示にすると 7.4.0, 7.4.1 がリリ…

AVAudioPlayer と AVPlayer の初期化時の注意点

AVAudioPlayer には NSURL で初期化を行う以下のメソッドがある。 - (instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError; AVPlayer にも NSURL で初期化を行う以下のメソッドがある。 + (id)playerWithURL:(NSURL *)URL; - (inst…

AVAudioRecorder deleteRecording でクラッシュ

AVAudioRecorder を生成後、録音を開始しないまま deleteRecording メソッドを呼ぶとクラッシュしたりエラーが出たりする。 以下のコードで試せる。 iOS 8.2, iOS 8.3 ではクラッシュ iOS 9.0 β ではコンソールに以下のエラーが出たがクラッシュはしなかった…

CITextFeature の iOS 9β4 での変更点

iOS 9で追加されたテキスト領域の矩形を検出できる CITextFeature に iOS 9 β4 で subFeatures というプロパティが追加された。 @property (readonly) NSArray *subFeatures; この subFeatures プロパティは検出した領域内に含まれる各文字の領域を示す CITe…

Apple Watch と WatchOS のデバイス情報を取得する

iOS 9 β4で WKInterfaceDevice にデバイス情報を取得するメソッドが追加された。 追加されたメソッドは以下で取得できる情報は iOS の UIDevice に存在する同名のメソッドと同じ。 @property(nonatomic, readonly, copy) NSString *systemVersion WK_AVAILAB…

Photos.framework で自撮り(selfie)画像の一覧を取得する

iOS 9 β3で PHAssetCollectionSubtypeSmartAlbumSelfPortraits NS_AVAILABLE_IOS(9_0) = 210 が追加された。 以前紹介したスクリーンショット画像の一覧取得は Photos.framework でスクリーンショット画像の一覧を取得する - ObjecTips PHAssetMediaSubtype …

viewWillDisappear: では super をいつ呼ぶべきか

- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // some implements } と - (void)viewWillDisappear:(BOOL)animated { // some implements [super viewWillDisappear:animated]; } どちらが良いの?という議題 Appleのド…

UITableViewCell で Auto Layout + UITextView を使う際の Tips

iOS 8の self-sizing cell で自動で高さを調整してくれるように実装したところちょっと問題が。 まずセルのレイアウトは以下 上に UILabel, 下に UITextView を配置してラベルとテキストビューの間は0px ラベルとテキストビューそれぞれのセルの contentView…

UITableViewCell のメニューの表示位置をカスタマイズする

まず UITableView のセルのメニュー表示の実装方法はこちら UITableView のセル選択時にメニューを表示する - ObjecTips 前回の方法では UITableViewDelegate を使ってメニュー表示をする時と同じ標準的な位置にメニューが表示される。 セルへのメニューの表…

UITableViewCell 選択時にメニューを表示する

前回は UITableViewDelegate を使って簡単にメニュー表示をする方法について書いた。 UITableView のセルの Copy Paste メニューを表示する - ObjecTips この方法はセルを長押しした時にメニューを表示する事ができるが、セルをタップして選択したらすぐにメ…

UITableViewCell で Copy Paste メニューを表示する

UITableView にはセルの Copy Paste メニューを簡単に実装できる delegate メソッドが用意されている。 // Copy/Paste. All three methods must be implemented by the delegate. - (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPa…

デフォルトの EKCalendar について

デフォルトの EKSource iOS にはデフォルトで2つのデフォルトのソース EKSource が用意されている。 1つはローカルのカレンダー(iCloud同期を設定しない場合)。 もう1つは EventKit からはアクセスできない誕生日用のカレンダー。 このあたりの詳しい話は…

float 等の浮動小数点数の誤差を考慮して等価比較する

よく定数を忘れるので備忘 float の誤差を考慮して等価比較するには FLT_EPSILON を使う double のための DBL_EPSILON long double のための LDBL_EPSILON も用意されている。 例えば float a が float b とイコールであるかをチェックするには a と b との…

Photos.framework でスクリーンショット画像の一覧を取得する

iOS 9 β2で PHAssetMediaSubtypePhotoScreenshot NS_AVAILABLE_IOS(9_0) = (1UL << 2) が追加された。 これを使えば写真ライブラリからスクリーンショット画像のみを取得したり、逆にスクリーンショットを排除した画像一覧を取得する事ができる。 コードは以…

NSUserDefaults の変更通知を受け取る

NSUserDefaults には NSUserDefaultsDidChangeNotification という通知が用意されていて変更通知を受け取る事ができる。 この通知は userInfo が nil になっていて、何が変更されたのか変更の詳細を知る事ができない。 NSUserDefaults の何のキーが変更され…

iOS 8リマインダーアプリの挙動調査 その2

前回の内容は以下 iOS 8リマインダーアプリの挙動調査 - ObjecTips 優先順位の !!! は UITextView の中に含まれている事が分かった。 これをコピーすると何が入っているのか。 UIPasteboard を使って中身を見てみた。 すると pasteboardTypes には ( "com.ap…

iOS 8リマインダーアプリの挙動調査

リマインダーアプリの優先順位の表示を参考にするため、どのように実装されているのか調べてみた。 優先順位の !!! の部分は attributedString もしくは attachment の画像として UITextView の中に一緒に入れられているっぽい。 しかしテキスト編集時にこの…

dispatch_block_t

dispatch/object.h に以下のような定義がある。 typedef void (^dispatch_block_t)(void); 自前の実装の中で - (void)test { void (^blockName)(void) = ^{ }; } @interface MyObject : NSObject @property (nonatomic, copy) void (^blockName)(void); @end…

ARC で retain count を調べる

ARC環境では retain count を取得する retainCountメソッドと手動で retain release を行う retain release メソッドが使えなくなった。 でもいつどこでオブジェクトが保持され解放されているかオブジェクトの retain count を調査したい時がある。 そういう…

iOS 8.3 to iOS 9.0 API Differences CoreTelephony

まだWWDCのネットワーク系のビデオを見ていないので紹介されているか分からないけど、たぶんされていないであろう CoreTelephony の変更点について。 関連記事は以下 iOS 8.3 to iOS 9.0 API Differences Core Image - ObjecTips iOS 8.3 to iOS 9.0 API Dif…

iOS 8.3 to iOS 9.0 API Differences CoreLocation

iOS 9 での CoreLocation の変更点 関連記事は以下 iOS 8.3 to iOS 9.0 API Differences Core Image - ObjecTips iOS 8.3 to iOS 9.0 API Differences オーディオ周り - ObjecTips iOS 8.3 to iOS 9.0 API Differences ネットワークとWeb周り - ObjecTips iO…