android & ios

2013年QiitaのiOSタグでストック数が多い記事ランキング100

2013年ふりかえりのため、この1年でQiitaのiOSタグで共有された記事をQiita APIで取得してストック数順に並べてみました。集計期間は2013年12月31日20:10の1年前からです。 個人的には9位の「Xcodeと自動化」がPodfile.lockなど自動化と直接関係ないところへ一旦話題が移っているのがいいですね。 また、コメント数が多いものはストック数関係なくさらに深く議論されていて興味深いと思うので参考にコメント数も表示してます。 ランク 非ストック数 コメント数 タイトル ユーザー 作成...

Missing context for method declaration

タイトルのエラーが出たので備忘録 以下を参考にする事でかいけつ http://onno.jp/dev/2012/08/ios-missing-context-for-method-declaration-missing-end.html 原因は @implementation hoge #import huga.h ... @end のimportの位置が悪い #import huga.h @implementation hoge ... @end でかいけつ

iPhoneのデフォルトメーラが違う添付画像を表示するバグ

※古いOS(iOS4.1)の話なので現在はなおってるかもしれません。誰か検証お願い iPhoneのデフォルトメーラには、 「添付したインライン画像とは違う画像が表示されることがある」 というバグが存在します。 インライン画像付きHTMLメールは、以下のような構文となります。 <img src="cid:[email protected]"> 普通であれば<img src="image/01.gif">というような形になるところですが、インライン添付では画像が置いてあるURLとか無いので、かわりにcidという画像を結びつける記号...

iOSからimgurに画像をアップロードするためのモジュール

https://github.com/sato-ma/ImgurUploader 通信の結果はNSURLConnectionDelegateとNSURLConnectionDataDelegateを実装したインスタンスをdelegateに設定することで受け取る。

ARC環境での強参照/弱参照とNSHashTableの怪

NSHashTableというクラスがある。 https://developer.apple.com/library/mac/documentation/cocoa/reference/NSHashTable_class/Introduction/Introduction.html 簡単に言うと、これはNSMutableSetと同じような振る舞いをしながらも、コンテンツに対して弱参照を持つことができるというコンテナだ。FoundationのコンテナクラスであるNSArray,NSSet,NSDictionaryは、原則としてコンテンツに対して強参照を持つ。これがどういうことかというと、あるコンテナに格納したオブジェクトのも...

autolayoutの利用する上で知っておくこと

stroyboardでなにができるか 定義してないconstraintを自動的に配置できる それぞれのviewになんのconstrantがついているか一覧で確認できる constrantは絶対的な指定と相対的な指定のふたつがある frameとconstrantで矛盾があれば表示される frameとconstrantでどちらに従うか選んで修正することができる frameとconstrantとはなにか frameとは、storyboard上で指定している位置と大きさ。 constrantは、viewごとにどのように位置と大きさを指定するか定義している。表示の際は、fram...

CocoaPodsで "[!] Pod::Executable pull" エラーが出てしまった際の対策

pod install を実行した際に、↓こんな風にエラーが出てしまいました [!] Pod::Executable pull A AFHARchiver/0.2.1/AFHARchiver.podspec A AFWunderlist/1.0/AFWunderlist.podspec (省略) A ym/1.2.6/ym.podspec A zipzap/6.0/zipzap.podspec Pull is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'. 原因 2014/1/30にSpecsのリ...

iOSでTDDをしてみる-Kiwi-Mocks and Stubs編

KiwiのMocks and Stubsについての簡単な解説です。これは、最新情報では無いかもしれません。細かいことについては、公式を見ることをおすすめします。 https://github.com/allending/Kiwi/wiki/Mocks-and-Stubs Kiwiにはモックとスタブの機能が実装されています。まだ実装されていないオブジェクトと関連づいていてもテストが可能となります。 MockとNullMock モックは、実装されていないオブジェクトや実物を用いるのが難しい場合に変わりとして用いるための機能です。 Kiwiには2つ...

iOSでTDDをしてみる-Kiwi-Asynchronous Testing編

KiwiのAsynchronous Testingについての簡単な解説です。これは、最新情報では無いかもしれません。細かいことについては、公式を見ることをおすすめします。 https://github.com/allending/Kiwi/wiki/Asynchronous-Testing 非同期テストの方法です。Kiwiにはそれを可能にする機能だあります。 expectFutureValue()とshouldEventually 非同期の結果を設定するために、 expectFutureValueを使って変数をラップし、 shouldEventuallyまたはshouldEventuallyBeforeTimingOutAfter(seconds)...

見積もりの高さでUITableViewを高速化する話。

最初に。内容に誤謬がありましたら申し訳在りません。訂正を歓迎します。 tableView:heightForRowAtIndexPath: は rowHeight で置き換えるべきか UITableViewCellの高さが常に一定の時はrowHeightを使う - Qiita この記事には正しいことが書いてあるのですけど、影響があるのは **表示されるセル数** が100や1000に到達するような稀有なケースです。 通常のテーブルビューでは、セルは一度に高々12程度しか表示しないため、`tableView:heightForRowAtIndexPath:`を`rowHeight`に置き換...

アプリエンジニアがアプリのデザインで困った時に頼るべきサイト一覧

この内容は前回の記事同様に始めたばかりの個人ブログに掲載していますが、少しでもたくさんの方に見ていただきたいので、Qiitaにも掲載することにしました。 概要 アプリを開発する環境やチームは人それぞれだと思います。数人のプログラマーとデザイナーのチームで開発することもあればほとんど全てを一人でやる場合など。 特に日曜プログラマーの人でアプリを公開してみたいとなるとデザイナーの知り合いにお願いするか、お金を払ってデザインの発注するをするのはちょっと厳しい場...

[Objective-C]UISplitViewController のスワイプジェスチャーを無効にする

iPadでUISplitViewControllerを使用している場合、横にスワイプするとchildViewControlerが左から出てきて邪魔な場合があります。 そういった場合は、UISplitViewControllerのpresentsWithGestureオプションをNOに設定します。 self.presentsWithGesture = NO; UISplitViewController Class Reference

広告表示がないアプリでGoogle Analytics for iOSを組み込んでいるとリジェクトされる問題

今年2月に入ってからAdSupport.frameworkのASIdentifierManagerクラスにあるadvertisingIdentifierメソッドを使ったアプリがリジェクトされているという投稿が目立っていました。 参考: ASIdentifierManager の advertisingIdentifier を使っているとリジェクトされる問題 http://qiita.com/monry/items/b473e3db7e48f05be96b (上記では主にUnityが吐き出すコードを変更して対応) 解決法 Google Analyticsのライブラリを最新のv3.03aに置き換えることでAdSupport.frameworkをリンク...

特定のcellの上に載せたViewが載せていないcell上で表示されてしまう問題の解決策

あまり詳しくないのですが、 色々調べながら試してみると以下の対策が、実装の詳細がよくわかっていない段階の応急処置としては良さそうです。 応急処置:最初にcell.contentViewとcellのimageやlabel等のプロパティを全て削除する。 コード的には for (UIView *subview in [cell.contentView subviews]) { [subview removeFromSuperview]; } でcell.contentView上のViewを削除して、 cell.imageView.image = nil; 等でcellのプロパティで画面上のViewとして表示されるものを...

Objective-Cで動的にクラス定義/メッセージ送信

objc/runtime.hをフル盛りで使うとこんなことができる。 - (void)testDynamicClassDefinition { // コンパイル時に存在しないクラスをallocateする Class dynamicClass = objc_allocateClassPair([NSObject class], "DynamicClass", 0); // コンパイル時に存在しないクラスに存在しないメソッドを実装する SEL dynamicSelector = NSSelectorFromString(@"whoami"); IMP dynamicImp = imp_implementationWithBlock(^{return @"I'm DynamicClass!!";}); BOO...

iBeaconを利用したアプリ開発でチェックしておきたい!良記事・ソースコードまとめ

@hedjirog です。iBeacon Advent Calendar の2日目を担当します。 iBeaconの技術情報はまだ少ないようですが、参考になりそうな記事やソースコードをまとめてみました。 * 宣伝 * iOS開発関連の記事をつぶやく @ios_dev_bot を運用しています。 Advent Calendarの投稿チェック に良ければ利用してください。 目次 技術記事 スライド Apple公式ドキュメント 書籍 ソースコード 解説・関連記事 2013 iBeacon Advent Calendar ※ お世話になったリンク先: はてなブックマーク / Google検...

blockでコールバックを書く

いい加減、delegateばっかだと、あっちこっち読むのが大変なので書いてみた まず、呼び出される側から。 BlockSample.h #import <Foundation/Foundation.h> typedef void (^BlockSampleCallBack)(NSArray *foo); @interface BlockSample : NSObject - (void)hoge:(NSString *)fuga callback:(BlockSampleCallBack)callback; @end typedefで定義してするほうが可読にいいよねってことらしい。 BlockSample.m #import "BlockSample.h" @implementation BlockSample - (void)hoge:(...

iBeaconを使ってみた

BLEを触ってみたかったのでiBeaconを使ってみました。 iBeaconはBluetooth LEを利用したAppleのテクノロジで、iPhone4s, 第3世代iPad以降の機種で利用することが出来ます。BLEデバイスのアドバタイズメント・パケットのフォーマットを工夫して実装しているようです(上原さんのブログより)。 AppleのBluetooth LE利用可能機種は次の通り(2014年1月時点)。 iPhone4 iPhone5 iPhone5s iPhone5c iPad mini iPad mini Retina iPad 3rd gen iPad 4th gen iPad Air とりあえず触ってみよ...

UIViewControllerでUITableViewを使うときのテンプレートファイルをXcodeに追加する

UITableViewControllerというテンプレートファイルがありますが、 個人的には使ったことがありません。。 いつも結局は、UIViewControllerにUITableViewを持たせてコーディングしてます。 いつもいつも作るのは面倒なので、 shu223さんの記事Xcodeのファイルテンプレートを自作するを参考にして、自分で作ってみました。 自作テンプレートファイル置き場を作成する /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File T...