日々精進

新しく学んだことを書き留めていきます

Mac

XCode5 developer previewをインストールするとcocoapodをupdateできなくなる

sudo gem update coocapodを実行すると以下のエラーが出る。 ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension.これはXCode Command Line Toolがインストールされていないことと、 デフォルトのXCodeがpreview版になってい…

Objcの定数

.hに FOUNDATION_EXPORT NSString *const MyFirstConstant; FOUNDATION_EXPORT int const MyFirstConstant = 1.mに NSString *const MyFirstConstant = @"FirstConstant";のように書く。defineは使わないようにする。 参考:cocoa - Constants in Objective …

グローバルショートカットキーを設定する

mac

どのアプリをアクティブにしてても有効なショートカットキーを設定できるライブラリ。 これのおかげでショートカットキーが簡単に実装できました。感謝。 shpakovski/MASShortcut · GitHub

NSUserDefaultsとsqliteのどちらにデータを保存すべきか

NSUserDefaultsは学習コストが低いのがメリットだけど、それ以外はsqliteの方が勝っているよとのことらしい。 参考:iphone - What are the limitations of NSUserDefaults? - Stack Overflow

簡単に言語設定を変更する方法

詳細は↓。これテストする時便利だった。 iOSアプリのローカライズの動作チェックとかが簡単になるかもしれないやり方 - iOS プログラミングメモ - iPhoneアプリ開発グループ schemeのArguments Passed On Launchに以下を追加すればよい。 -AppleLanguages "(…

HTTP通信時のCFDataのメモリリーク

socket.io-objc v0.3.3でxhr-polling通信を行うとメモリリークが発生する。 CFDataが解放されずどんどんたまる。 これはNSURLCacheがCFDataをキャッシュしていることが原因。 下記を通信が終わったタイミングで実行するとCFDataが解放される。 NSURLCache *s…

sparkle frameworkでアプリの更新をするとエラーが出る

mac

sparkle frameworkで新バージョンのアプリをダウンロードし、インストールしようとすると、以下のエラーが出た。 Sparkle Error: An error occurred while installing the update. Please try again later. Sparkle Error (continued): Couldn't find an app…

WebViewでリンクをクリックしたらSafariを起動させる

mac

self.webView.policyDelegate = self; と以下のコードでSafari起動できる。 - (void)webView:(WebView *)aWebView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)aRequest newFrameName:(NSString *)aFrameNam…

CoreDataで保存したデータを全部消す

MagicalRecordでできないかなと思ったけど、できないらしい。sqliteのファイルを削除すると全部消せる。 - (void)clearDb { NSString *sqliteFileName = [NSString stringWithFormat:@"%@%@", dbFileName, @".sqlite"]; NSURL *dbFileUrl = [NSPersistentSto…

モデル名を取得する方法

mac

Sparkleの中に取得したモデル名をわかりやすい名前に変換する対応表があるらしい。詳しくは以下参照。 参考:sysctlbyname & hw.model ( was Re: APIs for System Profiler information ) てか最初からiMac 2011 Midみたいな形式でモデル名を返してほしいよ…

システム環境設定>言語とテキスト>地域の取得方法

mac

以下のコードで取得できる。 NSUserDefaults* defs = [NSUserDefaults standardUserDefaults]; NSString* locale = [defs objectForKey:@"AppleLocale"]; 参考:https://developer.apple.com/library/ios/DOCUMENTATION/MacOSX/Conceptual/BPInternational/A…

環境変数一覧を表示する

mac

以下コマンドを実行すると表示される printenv

Macが段々重くなるのを防ぐ方法

mac

Macを長時間再起動せずに使っていると、スワップ領域が増えて徐々に重くなるが、 下記サイトに書いてある方法でスワップ領域を減らすことが出来る。 メモリを解放してスワップ発生を抑える方法 - ザリガニが見ていた...。 自分は下記コマンドを実行し、スワ…

NSURLResponseからヘッダ情報を取得する方法

mac

NSHTTPURLResponseにダウンキャストすればできる。 [XCODE] NSURLResponseからステータスコードやHTTPヘッダを取り出す方法 - YoheiM .NET

エイリアスとシンボリックリンクの違い

mac

・エイリアス Mac独自の機能 参照先のファイルを移動しても自動的に追跡してくれる。リンクが切れない! ・シンボリックリンク Linux標準機能 知らなかった。。 http://linker.in/journal/2012/09/post-199.php

osxアプリの使用状況解析ツール

mac

解析ツールとしてはGoogle Analyticsが最も有名だがOS Xに公式には対応してない。 下記記事でGAJavaScriptTrackerでOS Xから使えるという情報があった。 試してみたが、動かなかった。 objective c - Good analytics library for Mac software - Stack Overf…

dSYMファイルを生成する方法

mac

Macアプリはデフォルトの設定だとビルド時にdSYMが出来ないっぽい。 Project Settings, Build Options -> Debug Information FormatをDWARF with dSYM FileにすればdSYMができる。 c++ - prevent compiling from generating dSYM on OS X (using make) - Sta…

Sparkleをインストールしてアプリを実行するとReason: image not found

mac

以下の対応で直る。 ・Build PhasesのLink Binary With LibraryにSparkle.frameworkを追加し、optionalにする。 ・Build PhasesにCopy Fileを追加し、そこにSparkle.frameworkを追加する。 参考:_OBJC_CLASS_$_ referenced from というエラー - bi_naの日記

Sparkle.frameworkをプロジェクトに追加してビルドするとimage not found

mac

Link Binary With LibrariesからSparkle.frameworkを削除すると直る。どんな罠だ。。 参考:objective c - Can't run my app; “image not found” referring to bundled framework - Stack Overflow

ビルドするとLexical or Preprocessor Issue

mac

Lexical or Preprocessor Issueでググると、再起動したら直るよと書いてあったけど、再起動しても直らなかった。 原因はHeader Search Pathが間違っていること。 Frameworkをプロジェクトに追加したのだが、その後でプロジェクト内のFrameworkの場所を変更し…

dropboxを複数起動する

mac

Autometerを使うとできる。詳細は以下サイトで。 参考:1台のPCで複数のDropboxアカウントを使う方法 | ライフハッカー[日本版] Dropboxでサーバと手元の環境のコードを同期させてるので、コード同期用のアカウントと普段使いのアカウントを同時に使える…

ベータ版の配布のベストプラクティス

mac

・QuincyKit for Macでクラッシュレポートを送信させる ・HockeyApp、Sparkleで配布 HockeyAppはクラッシュレポートを集めたりもできるっぽい。便利そう。 参考:http://support.hockeyapp.net/discussions/questions/394-best-practices-for-beta-testing-m…

指定秒後に引数付きでメソッドを呼び出す

NSInvocationを使うと引数も渡せる。 setArgumentで引数を渡す時になぜかメソッドの実引数を渡すとエラーになった。 ローカル変数に代入し直すと直った。なぜ。。 - (void)requestImageWithUrl:(NSURL *)url callback:(void (^)(NSImage *image))callback { …

メニューのショートカット設定方法

mac

Macにメニューの項目に自由にショートカットを割り当てる機能があった!しらなんだ。。 環境設定>キーボード>キーボードショートカット>アプリケーション でショートカットを追加すればいい。 https://discussionsjapan.apple.com/thread/10116298?start=…

chromeのセキュリティ証明書のチェックを無効にする方法

mac

なりすましを防げなくなるので危険なので注意。これやったらセキュリティ証明書のエラーが出なくなる。 起動オプション - Google Chrome まとめWiki

macでポートスキャン

mac

最初からツールが入ってるらしい。便利。 http://sprout-t.net/article/show/mac-osx-portscan

呼び出し禁止メソッドを呼ぼうとするとコンパイルエラーにする

サブクラスでイニシャライザを実装する場合、 親クラスのイニシャライザを使用禁止にしたいことが多い。 普通は使用禁止にするメソッドを呼ぶと例外を出すようにすることが多いと思うが、以下のようにするとコンパイルエラーにすることができる。 - (instanc…

clang: error: unable to execute command: posix_spawn failed: Resource temporarily unavailableエラー

XCodeを再起動したら直った。なんだこりゃ。。 iphone - Xcode not compiling any project? 'clang failed with exit code 255' - Stack Overflow

Reactive Cocoaについての記事

Qiitaにあったのでメモ。RACは情報が少ないので助かる。 Objective-C - ReactiveCocoaに出てくる用語の整理 - Qiita

メニューバーに表示しているViewの横幅を変更するときの注意

mac

メニューバーに表示しているViewをinnerView、innerViewを含むNSStatusItemをitemとすると、 以下のコードだとメニューバーに何も表示されなくなる。 [innerView setWidth:30]; innerView.item.length = innerView.frame.size.width; 原因はitem.lengthが変…