カテゴリー : iOS

[iOS] アプリのアイコンのテカリを消す設定方法

iPhoneアプリのアイコンのテカリを消す設定方法をメモ。

iphone-app_Icon-already-includes-gloss-effects

info.plist ファイルの「Icon already includes gloss effects」の項目を YES を指定すればOKです。

[参考]

[XCODE] iPhoneアプリアイコンのテカリを消す設定方法 – YoheiM .NET

[iOS] UIRefreshControl を iOS5 対応させるライブラリ「ISRefreshControl」

iOS6 から対応になった UIRefreshControl を iOS5 対応させるライブラリ「ISRefreshControl」の使い方をメモ。

ishkawa/ISRefreshControl · GitHub

ISRefreshControl for iOS – Cocoa Controls

iOS5で動作するUIRefreshControlのライブラリをつくったときの話 – blog.ishkawa.org

ベースは UIRefreshControl なので、これらのドキュメントを見れば良いですね。

UIRefreshControl Class Reference

[iOS6] 引っ張って更新を簡単に実装できる UIRefreshControl を TableView で使ってみる | ラクイシロク

Objective-Cと戦うブログ: iOS6から追加されたUIRefreshControlを試す

UIRefreshControlで引っ張って更新をする #iOS #UITableViewController #UIRefreshControl – Qiita [キータ]

[iOS] NSOperation の maxConcurrentOperationCount を設定して同時実行スレッドを制限する

NSOperation の同時実行スレッドを制限するには maxConcurrentOperationCount を設定することで実現できます。

例えば、メインスレッド以外に最大2スレッドまで実行させたい場合、以下のように設定します。

sharedQueue = [[NSOperationQueue alloc] init];
sharedQueue.maxConcurrentOperationCount = 2;

以上です。

[iOS] NSOperationQueue をシングルトンで扱う方法

NSOperationQueue をシングルトンで扱うために下記のように NSOperationQueue+SharedQueue.h と NSOperationQueue+SharedQueue.m を追加します。

//  NSOperationQueue+SharedQueue.h
 
#import <Foundation/Foundation.h>
 
@interface NSOperationQueue (SharedQueue)
 
+ (NSOperationQueue *) sharedOperationQueue;
- (void)performSelectorOnBackgroundQueue:(SEL)aSelector withObject:(id)anObject;
 
@end
 
#define SHARED_OPERATION_QUEUE [NSOperationQueue sharedOperationQueue]
//  NSOperationQueue+SharedQueue.m
 
#import "NSOperationQueue+SharedQueue.h"
 
@implementation NSOperationQueue (SharedQueue)
 
+ (NSOperationQueue *) sharedOperationQueue {
 
    static dispatch_once_t pred;
    static NSOperationQueue* sharedQueue;
 
    dispatch_once(&pred, ^{
        sharedQueue = [[NSOperationQueue alloc] init];
    });
 
    return sharedQueue;
}
 
- (void) performSelectorOnBackgroundQueue:(SEL)aSelector withObject:(id)anObject {
 
    NSOperation* operation = [[NSInvocationOperation alloc]
                              initWithTarget:self
                              selector:aSelector
                              object:anObject];
    [[NSOperationQueue sharedOperationQueue] addOperation:operation];
    [operation release];
}
 
@end

[参考]

iphone – Sharing NSOperationQueue across View Controllers? – Stack Overflow

Tutorial: Asynchronous HTTP Client Using NSOperationQueue | iPhone Programming Tutorials

objective c – Global NSOperationQueue – Stack Overflow

Cocoa Tutorial: NSOperation and NSOperationQueue | Cocoa Is My GirlfriendCocoa Is My Girlfriend

Library/NSOperationQueue+SharedQueue.h at master · docchang/Library · GitHub

Library/NSOperationQueue+SharedQueue.m at master · docchang/Library · GitHub

[iOS] EXC_BAD_ACCESS の解決方法

iOS アプリ開発でたまに現れる EXC_BAD_ACCESS エラーの解決方法をメモ。

詳しくは下記のサイトを参考にしました。

iOS 開発で、EXC_BAD_ACCESS とさよならするための6つのルール | Zero4Racer PRO Developer's Blog

EXC_BAD_ACCESS エラー事例

実際に、EXC_BAD_ACCESS エラーを発生させたときの問題点は下記の通りです。(随時追記予定)

・NSString の変数に数値を代入していた

以上です。

[iOS] duplicate symbols : libGoogleAnalytics.a と libGoogleAnalytics_debug.a は共存できない

Xcode iOS プロジェクトをビルドしたら、下記のようなエラーが発生しました。

duplicate symbol _OBJC_METACLASS_$_GAIDispatcher in:
    /Users/bakorer/git/MyApp/Externals/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o)
    /Users/bakorer/git/MyApp/Externals/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o)
ld: 212 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

■ 解決方法

[TARGETS] → [Build Phases] → [Link Binary With Libraries] にて、libGoogleAnalytics_debug.a と libGoogleAnalytics.a のどちらかの Link を除去すればOKです。

ファイル名の通り、 libGoogleAnalytics_debug.a はデバッグ時に利用するライブラリなので、本番用ライブラリ libGoogleAnalytics.a と共存させようとしたせいでエラーが発生してしまってたみたいです。

[参考]

i get a liker error · Issue #262 · rs/SDWebImage

[iOS] 画像非同期取得 + キャッシュのライブラリ「SDWebImage」

Facebook の iPhone アプリでも使われている画像非同期取得 + キャッシュのライブラリ「SDWebImage」の使い方をメモ。

rs/SDWebImage · GitHub

SDWebImage を使っているアプリの一覧:Who Use SDWebImage

Facebook の iOS アプリで使われているというだけで安心感がありますね。

SDWebImageによる画像表示とキャッシュ – Cyber Passion for iOS

【iOS】SDWebImageでアプリ容量がどんどん増えていく件 | ht6030

SDWebImageを初めて使う際の注意点 | masaplabs

[iOS] Parse.com を使った Push 通知機能の実装方法

Parse.com を使って iOS アプリに Push 通知機能を実装したので参考になったリンクをメモ。

手順は主に下記の2つのページを参考にしました。

Quick Start | Parse

iOS Push Notifications | Parse

他にも、iOS向けのサンプルアプリやサンプルコードは下記にまとまってます。

Parse Tutorials | Parse

[iOS] ライブラリ管理ツール「CocoaPods」の使い方

MacアプリやiOSアプリ開発で使えるライブラリ管理ツール「CocoaPods」をインストールしました。

% gem install cocoapods
% pod setup
Setting up CocoaPods master repo
Setup completed (read-only access)
% pod --help
CocoaPods, the Objective-C library package manager.
 
Commands:
 
    * install    Install project dependencies
    * ipc        Inter-process communication
    * list       List pods
    * outdated   Show outdated project dependencies
    * push       Push new specifications to a spec-repo
    * repo       Manage spec-repositories
    * search     Search pods
    * setup      Setup the CocoaPods environment
    * spec       Manage pod specs
    * update     Update outdated project dependencies
 
Options:
 
    --silent     Show nothing
    --version    Show the version of CocoaPods
    --no-color   Show output without color
    --verbose    Show more debugging information
    --help       Show help banner of specified command

■ エラー対応

[!] The platform of the target `Pods` (iOS 4.3) is not compatible with

対応するiOSのバージョンを Podfile に指定すればOK

Podfile

platform :ios, '5.0'

■ .gitignore に追加する項目

Pods/
MyPorjectName.xcworkspace

■ Pods は別途、ビルドして libPods.a ファイルを作成する必要がある

ビルドしないと libPods.a ファイルが見つからないエラーが発生してしまう。

ld: library not found for -lPods

Pods をビルドして libPods.a の作成するまでは、下記のサイトがとても分かりやすく参考になった。

CocoaPodsを使ったXcodeプロジェクトの作り方(1) – shigeki.takeguchi.log

CocoaPodsを使ったXcodeプロジェクトの作り方(2) – shigeki.takeguchi.log

CocoaPodsを使ったXcodeプロジェクトの作り方(3) – shigeki.takeguchi.log

CocoaPodsを使ったXcodeプロジェクトの作り方(4) – shigeki.takeguchi.log

[参考]

CocoaPods: The Objective-C Library Manager

CocoaPods ではじめる Objective-C ライブラリ管理 (1) – Watsonのメモ

CocoaPodsでPodの利用&作成のメモ #Objective-C #CocoaPods – Qiita [キータ]

[iOS] xcode cannot run using the selected device – No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.

Xcode でアプリを iPhone へ実機転送しようとしたらエラーが発生して、転送できませんでした。

■ エラー内容

Xcode cannot run using the selected device.

No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.

■ 解決方法

  1. Organize を開く
  2. 左メニューの実機転送したい端末(iPhoneなど)をクリック
  3. 「Use for Development」ボタンをクリック

[参考]

ブランク復帰エンジニアの開発メモ No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.