2014年12月26日金曜日

Carthage で Code Sign Identity および Provisioning Proifleを直接指定してビルドする方法

誰得情報なのでメモだけ残しておきます。
手元のMacに複数のCode Sign Identityがあってビルドが失敗する人向けです。

akisute Test$ carthage update

*** Fetching SwiftState

*** Fetching SwiftTask

*** Checking out SwiftState at "1.1.1"

*** Checking out SwiftTask at "2.4.0"

*** xcodebuild output can be found in /var/folders/gk/205sh3lx1qdfrwtxcb_tj97m0000gp/T/carthage-xcodebuild.uzBMvq.log

*** Building scheme "SwiftState-iOS" in SwiftState.xcodeproj

*** Building scheme "SwiftState-OSX" in SwiftState.xcodeproj

*** Building scheme "SwiftTask-iOS" in SwiftTask.xcworkspace

*** Building scheme "SwiftTask-OSX" in SwiftTask.xcworkspace

** BUILD FAILED **



The following build commands failed:
Check dependencies

(1 failure)

akisute Test$ tail -n 10 /var/folders/gk/205sh3lx1qdfrwtxcb_tj97m0000gp/T/carthage-xcodebuild.uzBMvq.log
** BUILD SUCCEEDED **


Build settings from command line:
    SDKROOT = macosx10.10


=== BUILD TARGET SwiftState-iOS OF PROJECT SwiftState WITH CONFIGURATION Release ===


Check dependencies

Code Sign error: Multiple matching codesigning identities found: Multiple codesigning identities (i.e. certificate and private key pairs) matching “iPhone Developer” were found.




こういうときは環境変数を使って、

JP11688 kaa$ CODE_SIGN_IDENTITY="iPhone Developer: Masashi Ono" carthage update

*** Fetching SwiftState

*** Fetching SwiftTask

*** Checking out SwiftState at "1.1.1"

*** Checking out SwiftTask at "2.4.0"

*** xcodebuild output can be found in /var/folders/gk/205sh3lx1qdfrwtxcb_tj97m0000gp/T/carthage-xcodebuild.5z3CLW.log

*** Building scheme "SwiftState-iOS" in SwiftState.xcodeproj

*** Building scheme "SwiftState-OSX" in SwiftState.xcodeproj

*** Building scheme "SwiftTask-iOS" in SwiftTask.xcworkspace

*** Building scheme "SwiftTask-OSX" in SwiftTask.xcworkspace



または、

JP11688 kaa$ PROVISIONING_PROFILE="XXXX-XXXX-XXXX-XXXX" carthage update

*** Fetching SwiftState

*** Fetching SwiftTask

*** Checking out SwiftState at "1.1.1"

*** Checking out SwiftTask at "2.4.0"

*** xcodebuild output can be found in /var/folders/gk/205sh3lx1qdfrwtxcb_tj97m0000gp/T/carthage-xcodebuild.5z3CLW.log

*** Building scheme "SwiftState-iOS" in SwiftState.xcodeproj

*** Building scheme "SwiftState-OSX" in SwiftState.xcodeproj

*** Building scheme "SwiftTask-iOS" in SwiftTask.xcworkspace

*** Building scheme "SwiftTask-OSX" in SwiftTask.xcworkspace


参考: http://stackoverflow.com/questions/9264727/code-sign-identity-parameter-for-xcodebuild-xcode4
参考: https://github.com/Carthage/Carthage/issues/235

Container View Controllerを作ってみよう

iOSContainer View Controller

Container View Controller

UIViewControllerUIViewControllerUINavigationControllerUITabBarControllerUIPageViewController

iOS 5Container View ControllerUIKitContainer View Controller使cocoapods

Container View ControllerView Controller

Container View ControllerUIViewController- (void)addViewController:(BOOL)animatedView Controller
Container View ControllerView Controller5


(一)addChildViewController:


Container View ControllerView ControllerView


(二)didMoveToParentViewController:


Container View ControllerView Controller


(三)beginAppearanceTransition:animated:


ViewContainer View ControllerView ControllerviewWillAppear


(四)addSubview:


View


(五)endAppearanceTransition


ViewContainer View ControllerView ControllerviewDidAppear





Container View ControllerView Controller

View ControllerOK- (void)removeViewController:(BOOL)animated


shouldAutomaticallyForwardAppearanceMethods



iOS 6override使YESContainer View ControllerContainer View ControllerviewWillAppear/viewDidAppearchildViewControllersviewWillAppear/viewDidAppearNOchildViewControllersbeginAppearanceTransition:animated:

YES使NOContainer View ControllerchildViewControllers

2014年12月23日火曜日

ReactiveCocoa を Swift から使ってみた

FRP(Functional Reactive Programming)ReactiveCocoaSwift使

CocoaPods
http://tnakamura.hatenablog.com/entry/2014/11/15/how_to_use_reactivecocoa_in_swift

GitHub
https://github.com/ReactiveCocoa/ReactiveCocoa
https://github.com/ReactiveCocoa/ReactiveCocoa/tree/master/Documentation
API使

ReactiveCocoa

RACStream



RACSequence

RACStreamPull-Base

RACSignal

RACStreamPush-Base

RACSubscription

RACSignalPromisethencatchfinally

RACCommand

UIBarButtonItemUIButtonIBActionRACSignal使enabledsenderfilter/map/reduce/

RACTuple

使Swifttuple








使

Swift便使

RACSignal

RACSignalKVOKVOArray使ReactiveCocoaCocoa
Objective-C使Swift
https://github.com/ReactiveCocoa/ReactiveCocoa/issues/500
https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1197

delegateRACSignal

RACSubjectRACSignal使
rac_signalsForSelector使
http://spin.atomicobject.com/2014/02/03/objective-c-delegate-pattern/

rac_signalsForSelectormethod swizzling使使


Objective-CFRP

2014年12月19日金曜日

SwiftからCやObjective-Cのライブラリを扱うときのテクニック数点

Objective-C Bridging Headerを利用することで、Swiftは既存のいかなるC/Objective-Cコードのシンボルでも呼び出すことが可能になっています。しかしながら場合によってはSwift単体では素直に書きづらいハマりどころがあります。C/Objective-Cのラッパーを作り、Objective-C Bridging Header経由でSwiftから呼び出せば全ての問題は解決できるのですが、面倒くさいですしやはりSwift単体で何とかしたいですよね。そこでここでは素直に書きづらいハマりどころと、それを何とかしてSwift単体で解決する方法をご紹介します。


※以下の情報は2014/12/19現在のものです。Swiftは言語仕様の変化が激しいので予期せず変更されている場合があります、ご了承ください。



1. ARCObjective-C


KeychainAPIARCObjective-CUnmanaged使

Unmanagedretain, release, autoreleasetakeUnretainedValue()takeRetainedValue()TSwift



2. C


CUnsafePointer使CAPISwiftAPISwiftUnsafePointerCAPINULLnilUnsafePointer.null()

UnsafePointerCOpaquePointerCFunctionPointerAPICOpaquePointer.null()CFunctionPointer.null()API



3. cStringUsingEncoding()


SwiftSwiftStringCocoaNSString2cStringUsingEncoding()使String.cStringUsingEncoding()[CChar]?NSString.cStringUsingEncoding()UnsafePointerStringCAPI

NSString



4. enumOR


(´_`)

enumoptionsnil 

ORenumC/Objective-CObjective-C Bridging HeaderSwift




2014年9月30日火曜日

GitHub:Enterprise 環境下では CocoaPods を 0.34.0 以上にアップデートしてはいけません






CocoaPods 0.34.0使GitHub:EnterprisegitPodSpecSource使



CocoaPodsgitpod install, pod update



0.34.0CocoaPodsgitclone--depth 1 (shallow clone) GitHub:EnterpriseGitHub:Enterprisegithttphttpsshallow clonepod installpod update





CocoaPods0.33.10.33.1Qiita

http/httpsssh clone URL使sshGitHubhttp/https

ssh clone使:tag:branch使:commitPodspec



CocoaPodsGitHub:EnterpriseCocoaPodsGitHub:EnterpriseGitHub:Enterprise


2014/10/01

GitHub:Enterprise





2014年9月8日月曜日

Swift から Core Data を操作するときはこの2点だけ気をつけよう (Xcode 6 beta 7編)

将来的にXcode側の対応が変わる可能性が極めて高いので暫定ですが、Xcode 6 beta 7でSwiftからCore Dataを触った時に注意するポイント2点まとめです。この2点にだけ気をつければSwiftでもCore Dataは案外あっさり動きますのでご安心ください!

1. プロパティの設定の仕方


  • @NSManagedを使うこと
  • Int, BoolではなくNSNumberを使うこと。StringはStringでOK
  • Many関連にはNSSetを指定すること



2. entityNameの与え方


  • コード上ではクラス名だけを与える
  • Model Editor上ではモジュール名.クラス名(完全修飾名)を与える



Model Editorではこのようにモジュール名.クラス名の形で設定する必要があります



あとは普段Objective-Cで使っている時と同じように使えばOKです。一応、簡単なSwiftからCore Dataを操作するラッパライブラリを書いてみたので、もし宜しければ見てみてください。
https://github.com/akisute/Dove

【ヤヴァい】リリース直前の Swift の仕様が早くも悲惨なことになってる

正式版リリースまで後一ヶ月と噂されるXcode 6と新言語Swiftですが、リリース一ヶ月前にも関わらずその仕様が早くも悲惨との声がごく一部から上がっているようです!!



public private(set)って結局どっちなの!?

beta 5から追加されたアクセス制限指定子ですが、その仕様に疑問の声が!

Apple Push Notification で送られてきた通知を通知センターから消すたった一つの方法



iOS使APIApple


: Apple Push NotificationRemote NotiifcationUILocalNotification

TwitterFacebook調

applicationIconBadgeNumber10Apple Push Notification

http://stackoverflow.com/questions/8682051/ios-application-how-to-clear-notifications
http://stackoverflow.com/questions/9925854/remove-single-remote-notification-from-notification-center

iOS 5~8


: iOS 8Apple

2014年8月25日月曜日

Silent Push / Background Fetch 時の fetchCompletionHandler に渡す引数ごとの挙動の違いを調べてみた

2014/09/10: 調


iOS 7Push (Silent Push)  (Background Fetch) fetchCompletionHandlerUIBackgroundFetchResult

調



UIBackgroundFetchResultNewData



UIBackgroundFetchResultNoData



UIBackgroundFetchResultFailed





fetchCompletionHandler調

UIBackgroundFetchResult

調UIBackgroundFetchResult2
http://www.objc.io/issue-5/multitasking.html
https://codeiq.jp/magazine/2013/12/3022/

Silent PushBackground FetchOS使Silent PushBackground Fetch

App Switcher使UIUIViewUIViewControllerviewWillAppear, viewDidAppear,  didMoveToSuperView

UIBackgroundFetchResultNSURLSessiondelegateUIviewDidAppearGoogle Analytics

調

UIBackgroundFetchResultNewData




Silent Push436101512

Background Fetch



UIBackgroundFetchResultNoData




Silent PushNewDataNewData




UIBackgroundFetchResultNoDataSilent PushBackground Fetch



UIBackgroundFetchResultFailedを渡した時

スナップショットの更新は発生しません。

こちらもUIBackgroundFetchResultNoDataと同様、UIBackgroundFetchResultFailedばかりを返却していると、Silent Pushの受取可能頻度およびBackground Fetchの発生頻度に対してペナルティがかかる恐れがあります。何度試行してもデータが取れないので、システムが再試行頻度を下げるのではないかという推測ですが、実際に観測できたわけではありませんので、なにか情報が入り次第また詳しくお伝えします。



2014年8月12日火曜日

Apple Push Notification (APN) 使用時の delegate の挙動について、 iOS 7以降 / iOS 6以前の差をまとめた

iOS 7iOS 6PushPush

使delegate method

iOS 7




Pushapplication:didReceiveRemoteNotification:fetchCompletionHandler:使

application:didReceiveRemoteNotification:fetchCompletionHandler:application:didReceiveRemoteNotification:application:didReceiveRemoteNotification:fetchCompletionHandler:application:didReceiveRemoteNotification:fetchCompletionHandler:OK

application:didReceiveRemoteNotification:application:didReceiveRemoteNotification:fetchCompletionHandler:iOS 6

application:didReceiveRemoteNotification:fetchCompletionHandler:


iOS 6




application:didReceiveRemoteNotification:使



application:didReceiveRemoteNotification:



iOS 7使iOS 6使


iOS 6以前iOS 7以降
初回起動application:didFinishLaunchingWithOptions:に
UIApplicationLaunchOptionsRemoteNotificationKeyが付いて呼び出される。
旧メソッドは呼び出されない。
application:didFinishLaunchingWithOptions:に
UIApplicationLaunchOptionsRemoteNotificationKeyが付いて呼び出される。
その後、UIApplicationStateActiveの状態で、新メソッドも呼び出される。
handlerについては、content-available指定が1の場合のみ付いてくる(未確認)。
起動中UIApplicationStateActiveの状態で、旧メソッドが呼び出される。UIApplicationStateActiveの状態で、新メソッドが呼び出される。
handlerについては、content-available指定が1の場合のみ付いてくる(未確認)。
未起動UIApplicationStateInactiveの状態で、旧メソッドが呼び出される。UIApplicationStateInactiveの状態で、新メソッドが呼び出される。
handlerについては、content-available指定が1の場合のみ付いてくる(未確認)。
データ取得不可能。UIApplicationStateBackgroundの状態で、新メソッドが呼び出される。
handlerは必ず付いてくる。
この通知がアラートや通知センターに表示された場合、ユーザーがそれらとインタラクションしたらさらにもう一回UIApplicationStateInactiveの状態で新メソッドが呼び出される。

iOS 7Pushapscontent-availablecontent-available1Push  iOS7 content-available



iOS 7Pushapsalertcontent-available

content-availableがあるcontent-availableがない
alertがある通常通知
同時にバックグラウンドデータ取得も可能
通常通知
alertがないサイレント通知
バックグラウンドデータ取得のみ可能
送信できない

content-availableiOS 6Pushcontent-availablealertiOS 62UIApplicationState

content-available使


調
sound2priority10priorityalertsound105
: http://stackoverflow.com/questions/19239737/silent-push-notification-in-ios-7-does-not-work

XcodeCapabilitiesBackground fetchRemote notificationsRemote notificationsRemote notificationsBackground fetch

UINavigationController.interactivePopGestureRecognizer の挙動を魔改造して変えてみる

: API

iOS 7UINavigationControllerinteractivePopGestureRecognizergesture recognizeriOS 7UIScreenEdgePanGestureRecognizer(Pan Gesture Recognizer)UIViewControllerInteractiveTransitioning(ViewController50%)

Apple

使
http://blommegard.se/blog/2014/01/31/a-take-on-custom-transitions-with-uinavigationcontroller/
UINavigationControllerinteractivePopGestureRecognizer



UIScreenEdgePanGestureRecognizer使

target_UINavigationInteractiveTransition調_cachedInteractionController

action@selector(handleNavigationTransition:)


target/actionUIGestureRecognizerUIPanGestureRecognizer使


(^o^)

2014年6月25日水曜日

App Extension や Widgets に App Container を使わないで簡単にデータを渡す方法

iOS 8から利用できるApp Extensionはアプリ本体とは別のプロセスとして動作するため、そのままでは簡単にデータを渡すことができません。公式のドキュメントではApp Containerという仕組みを使う方法が推奨されていますが、この方法はiOS Dev Center上でApp IDの設定が必要になったりするなど面倒がつきまといます。そこでより簡単にApp Extensionにデータを渡す方法がないか調べてみました。


1: UIPasteboard使


UIPasteboardTeam IDPasteboard使persistent



UIApplicationDelegateApp ExtensionWidgetViewController使

UIPasteboardnameTeam IDWidgetTestcom.akisute.MyApp.Widget



UIPasteboard使

http://blog.koogawa.com/entry/2013/12/07/034459


2: Keychain使


Keychain使App Extension

http://cocoadays.blogspot.jp/2011/02/ios-keychain-services_07.html


2014年6月9日月曜日

既存の Objective-C のメソッド引数の Swift 上での扱われ方を調べてみた

2014/06/09iOS8iOS8AppleNDA

iOS8Cocoa!NSKeyValueObservingaddObserver:forKeyPath:options:context:

func addObserver(_ anObserver: NSObject!,
      forKeyPath keyPath: String!,
         options options: NSKeyValueObservingOptions,
         context context: CMutableVoidPointer)

12!
340NULL?nil





!unwrapnil

!34nil






!nilnil


addObserver:forKeyPath:APICocoaAPI!nil


!NSKeyValueObservingOptions, CMutableVoidPointernil


調

!

Swift



 - nilnilnil

? - Optionalnil

! - ImplicitlyUnwrappedOptionalOptionalOptionalnil!nil


!?!?

!?Optional



CocoaAPI?!使nil
safeSwim()Objective-C



self.name!?

self.name?.description?self.namenilself.namenil?!description

??self.name!?String






(´_`)

Objective-CAPI!

!nil

Apple__convertion()NilTypenil




!?nilnil

!ImplicitlyUnwrappedOptionalOptionalOptionalOptional

!?nilnilOptionalObjective-C


SwiftAPInil!?使Swift!


CocoanilNULL0NilType__conversion()nil


Swift で __conversion メソッドを使ってカスタムの型変換を定義する方法

2014/10/21:
Xcode 6.0 beta 6__conversion()使asXcode 6.1(Swift 1.1)

class 変換対象の型 {
  init(_ obj: 変換元の型:) -> 変換対象の型 {
    return 適当に変換対象の型を返す
  }
}



Swiftas使Stringas使Int

SwiftnilNilTypenilNilType?(Optional)!(ImplicitlyUnwrappedOptional)NilTypenil

__conversion()
class 変換元の型 {
  //@conversion属性は付けても付けなくても大丈夫みたいですが、一応つけます
  @conversion func __conversion() -> 変換対象の型 {
    return 適当に変換対象の型を返す
  }
}
NilType使nil
nil
extension

2014年6月6日金曜日

Swift の enum型を for-in でイテレーションする方法

JavaEnum
SwiftenumGenerator使enum

Generator next() -> Element? ElementAnyObjecttypealiasOKSequenceOf<T>GeneratorOKnext()nilSequenceOf<T>


Generatoryield使便yieldEnumGenerator便使

Swift を使ってみてがっかりした点まとめ




iOS8/Xcode6/SwiftSwift使

Swift

[NSObject performSelector:]NSInvocationSwift使objc/runtime.hSwiftObjective-C

@optionalprotocol使

@objc使Apple

@objcSwiftObjective-C


@akisutesama @hironytic  vtable NSObject @objc  Objective-C  https://t.co/WWWp9nZRZZ
 Hoshi, Takanori (@hoshi_takanori) June 5, 2014
使Cocoa@objc使Swift

SwiftGCARCSwiftObjective-Cstrong, weakunownedweaknilOptional使unownednil使

closureself

Swiftdelegateclosure使callbackclosure使selfclosureclosureselfObjective-Cclosure capture listclosure[unowned self]selfunowned

使使
Objective-CweakSelf(´_`)

2014年5月26日月曜日

Android で 画面の回転や状態の復元まで考えた Fragment の使い方のガイドライン(自分用メモ)


Fragment 使





ActivityFragmentManager

ActivityFragment

onCreateonDestroyFragmentManager







Activity: MainActivity.java

Fragment: NetworkMapFragment.java



ActionBar2FragmentListView, Google MapsMapViewUIAndroid


Activity  Fragment


ActivityActivityFragmentManagerFragmentActivityFragmentManageronSaveInstanceActivityonCreateonCreateView



ActivityFragmentActionBarNavigationDrawerActivityFragment







BundleonSaveInstanceState使onCreateonCreateView使



ActivityFragmentManagerFragment



1: FragmentFragmentManagerattachFragmenthide

2: FragmentManagerattach/detachBundleonSaveInstanceState



1FragmentFragmentView



2FragmentViewMapView使hideFragmentBundleFragmentDetachDestroyActivityFragmentManager




2014年4月30日水曜日

Android で Dagger DI を使いやすくするライブラリを書きました

DaggersquareAndroidDI (Dependency Injection)








Android使



DI

Dagger使

AndroidDIandroid.content.ContextContextDI


DI DaggeredAndroid 

使README(´_`)

AndroidDI使







Context

ModuleModule

2014年4月20日日曜日

Android の TextView.setText() が遅い場合の原因と対処法

AndroidでTextViewを使っている時に、setText()に数百行単位のテキストを渡すとメインスレッドが1秒弱完全に固まってしまうという現象に見舞われてしまいました。昔の2.3端末ではともかく、手元の最新鋭機Nexus 5 (Android 4.4)でこんなに遅いのでは話になりません。しっかりと原因を調査し対処法を考えることにしました。

まずググってみると出るわ出るわ同じ問題。やはりみんな同じ場所で躓いているようです。

しかしながらいまいち具体的な原因がググっても見つかりません。そこでtraceviewを取ってみました。



すると原因が一発でわかりました。android.graphics.Paint.getTextRunAdvances()です。

Nexus 5では高速化のためJNI経由でネイティブ実装が呼び出されているようですが、それでもまだ間に合わないぐらい遅いようです。それもそのはず、このメソッドは与えられた文字の幅を計算するメソッドです。すなわち数百行のテキストのサイズを計算するため時間がかかっているようです。iOSで例えるならCore TextのCTGryphを計算するようなもの、UILabelのsizeThatFitsを呼び出すようなもので、非常に時間がかかってしまいます。


そこで対処法として、setText()でテキスト全体をセットし直すのではなく、TextViewが裏で保持しているテキストの一部だけを書き換えたり追記したりすることで一度に計算されるテキストのサイズの量を減らして高速化する事を考えました。iOSの場合はUITextViewにはsetText相当のプロパティしか用意されていないので、そのようなことをするのはdelegateを経由してみたりUIKeyInputプロトコルを自前で用意したりなどと困難がつきまとうのですが、Androidの場合は最初からTextViewの裏で保持しているテキストを自在に書きなおすための仕組みが用意されています。


そのためにはまずTextViewの裏で保持されているテキストを「編集モード」にしなければなりません。XMLでandroid:bufferTypeをeditableに指定するか、またはsetText()の第二引数にTextView.BufferType.EDITABLEを指定すると、テキストが編集モードで保持されるようになります。


そうするとgetEditableText()でTextViewが裏側で保持しているテキストが編集可能な状態で取得できます。あとはこのEditableオブジェクトに対して好きなように加工を行うだけです。単にテキストを追加するだけならTextView.append()を実行しても同じ結果が得られます。


こうすると数百行程度であればそれほど遅くなくテキストの追加ができるようになりました。しかしながら1000行を超えてくるとこれでも速度が足りなくなるので、自前でTextViewをサブクラス化して作っていくか、またはListViewにして一度に表示するテキスト量を減らすのが良いと思います。



2014年4月1日火曜日

Objective-🍣




iOSObjective-C






@[]



Apple使


Objective-C

Objective-C使


Objective-🍣



Objective-🍣




Objective-🍣Objective-🍣

Objective-C100%iOSObjective-🍣


Objective-🍣Objective-🍣

before


after


なんというこれまでにない全く新しいソースコード!あのキモかった@や[]、長ったらしいメソッド名がその姿を消しています!そのあまりの美しさには全プログラマが歓喜の涙を流すこと間違いありません!

Objective-🍣の導入方法

こちらのobjsushi.hをあなたのプロジェクト上でincludeするだけで使用できます!簡単ですね!


Objective-🍣を使ってみる

それでは早速ビルドしてみましょう!


あれ


えっちょ

\(^o^)/


ちなみに日本語セレクタ自体はXcode 5以降で普通に使えますよ。


お詫び

こちらの記事にはiOSならびに最新のMacでのみご覧になれる文字(具体的には🍣)を多数含んでおりますことをお詫び申し上げます(´・_・`)

2014年3月20日木曜日

iOSアプリ「確率計算機」をリリースしました



iOS (YourLuck)


https://itunes.apple.com/jp/app/que-lu-ji-suan-ji-gachano/id838156105?mt=8 (JP store)
https://itunes.apple.com/app/id838156105?mt=8 (Universal)

2



1

(v1.1.0)



使







(v1.1.0)


1便




FAQ


Q: 

A: 







%100130%1003012





Q: 

A: (´_`) 



98.7%1.3%100013153000

100使1~2%





Q: %

A: 


10098

10085

10050



Q: ガチャの確率ってどこで調べればええの?

A: 以下の様な方法をオススメします。





  

Twitter



サポートとか

もし何かございましたら、以下の私の連絡先にまでご連絡ください。
mail: akisutesamaあっとまーくgmail.com
twitter: @akisutesama

2014年3月12日水曜日

iOS SDK 7.1 / Xcode 5.1にアップグレードした時に踏んだ地雷まとめ

iOS SDK 7.1 / Xcode 5.1Tips

arm64CocoaPods

Xcode 5.1$(ARCHS_STANDARD_32_BIT)arm6464bitarm64 armv7 armv7s3arm64



arm64static

64bitCGFloatNSInteger4byte8byte


Build SettingsArchitectures(ARCH)armv7 armv7sCocoaPods使
https://github.com/CocoaPods/CocoaPods/issues/1787

Build SettingsArchitectures(ARCH)$(ARCHS_STANDARD_32_BIT)armv7 armv7sCocoaPods
http://stackoverflow.com/questions/8323343/archs-standard-32-bit-vs-armv6-armv7-armv7s-vs-i386

JSONKitCocoaPods

Xcode 5.1isaXcode 5.1JSONKit
https://github.com/johnezang/JSONKit/issues/79#issuecomment-6322919

JSONKit使NSJSONSerializationNSJSONSerializationiOS 5使iOS 4使

JSONKitXcode使github
https://github.com/ignazioc/JSONKit-NoWarning (JSONKit 1.5.2pre, )
http://cocoapods.org/?q=jsonkit-nowarning (CocoaPods使

CocoaPods

2014年2月25日火曜日

アプリのクラッシュ検知・クラッシュレポート系ライブラリを調べてみた

調




100%



退便



11




SDK

exception handlersignal handlerSDK

QA






http://www.raywenderlich.com/33669/overview-of-ios-crash-reporting-tools-part-1

Crashlytics
http://try.crashlytics.com

Crittercism
https://www.crittercism.com

Bugsense
https://www.bugsense.com

TestFlight ()
https://www.testflightapp.com

HockeyApp ()
http://hockeyapp.net

KSCrash (iOS)
https://github.com/kstenerud/KSCrash

ACRA (Android)
https://github.com/ACRA/acra

使

2014年2月24日月曜日

Google Analytics for iOS SDK バージョン3で自動セッションマネージメントをするライブラリを書きました

Google Analytics for iOS SDK 3

https://github.com/akisute/GAI-AutomaticSessionManagement

iOS 5.0MIT

Google Analytics for iOSiOSSDKWebGoogle Analytics使調

便Google AnalyticsiOSSDK3HomeiOS SDK2Android SDK3SDKAndroidiOS



使github

2014年1月18日土曜日

ユビレジを支える技術





iPadiPad+使

Scala@kmizuiOS@k_katsumi

//IssuegithubPull Request(PR)PR/CIforkPRJenkinsgithubPR/



HipChat使使SkypeIRC使HipChat



IRC

SkypeAPIbotJenkinsgithub

SkypeIRC

SkypeIRC


RailsRailsRails 3.X使4PR

Cucumber
API (http://ubiregiinc.github.io/ubiregi-api/) 

(´_`)

Heroku使github

iPadiOSiPadiOS/Android/B2BB2CiOS 5&iPadCore DataiOS 7iPad

ModelCore Data+MagicalRecordAFNetworking (1.X)使2.XiOS 5

ViewStoryboard/xibSegue使UIUI使使iPadContainer View Controller使

使Single App ModeView ControllerB2C

Raspberry Pi使WiFi

frankPR



2014年1月12日日曜日

iOS 開発者が Android 開発者になるために用意したものまとめ



iOS 2.0iOSAndroid使AndroidAndroid




iOS4 (iOS 2~7)

Android (Android 1.5~2.1使

Java3 (SIerSJC-PJava 78)

iOSAndroidJavaJava

JavaJava

MacAndroid Studio
http://developer.android.com/sdk/installing/studio.html
Eclipse+ADTAndroid StudioEclipse(´_`)

0.3.20.4

Android StudioEclipse+ADTJavaGradleGradleWeb


Android Studio使: http://gihyo.jp/dev/serial/01/android_studio


(Genymotion)

ADTAndroidiOS使Android SDK 1.64.4Genymotion使Android
http://www.genymotion.com

FreeFreeFreeGenymotionOracle VirtualBoxhttps://www.virtualbox.org

Android StudioGenymotionPreferences -> Plugins -> Brows RepositoryGenymotion

GenymotionAndroidiOSAndroidAndroidiOS


http://masterka.seesaa.net/article/252845343.html



Nexus 5Google

https://play.google.com/store/devices/details?id=nexus_5_black_16gb

SIMNexus 51/116GB White1/5



使iPhoneSIMiTunesSIM使WiFi



Nexus 5使Android 2.xiPhoneAndroidiOSAndroid



SIM使3GMVMOSIM30001000SIM便
OCN  One

Hello World!

WebTwitter


Android Studio使: http://gihyo.jp/dev/serial/01/android_studio

Android - Twitter: http://qiita.com/gabu/items/70689560618f8e67e726

TwitterUI

Web便


Google Android2: http://tatsu-zine.com/books/androidprogramming2ed


Java


Effective Android: http://tatsu-zine.com/books/effective-android


EffectiveEffective Java


Android UI Cookbook for 4.0 ICSIce Cream Sandwich: http://tatsu-zine.com/books/androiduicookbook40


4.0UI2.3iOSObjective-CUIKitUI


Android Security : http://tatsu-zine.com/books/androidsec


Android使iOS




2014年1月7日火曜日

LLDB のカスタムコマンドを Python で書いてみようとして大失敗した話

(´_`)

Xcode 5LLDBPython使LLDB

: http://qiita.com/dealforest/items/e3a5284badd17733ccc1



 UIImage 便
LLDBUIImage


LLDB使PythonLLDB
http://lldb.llvm.org/python-reference.html 
http://lldb.llvm.org/python_reference/ API


http://stackoverflow.com/questions/12668815/lldb-python-access-of-ios-variables
http://stackoverflow.com/questions/18468126/pointer-arithmetic-in-lldb-python-scripts
http://lists.cs.uiuc.edu/pipermail/lldb-dev/2011-January/000321.html





(一)UIImageUIImagePNGRepresentationNSData


UIImage使JPEGPNGObjective-C


(二)NSData bytes


expr (const void *)[(NSData *)UIImagePNGRepresentation(image) bytes]


(三)


exprraw data




orz
PythonexprSBFrame.EvaluateExpression(expr)SBValueSBValueSBDebuggerSBCommandInterpreterHandleCommand(expr, result)resultresult




2014年1月6日月曜日

Spark Inspectorを一ヶ月ほど使ってみた感想



iOSSpark InspectoriOS

Spark Inspector使



View


WebChromeFirefoxiOS使


NSNotification




Spark Inspector
http://inon29.hateblo.jp/entry/2013/12/06/002948
[Xcode][tool] Spark Inspector便
http://blog.natsuapps.com/2013/05/spark-inspector.html
使

Spark InspectorXcode


ViewUIView- (void)recursiveDescription調WebiOS

2012MacBook AiriPad





Spark Inspector

使8


CALayerUIViewAuto LayoutUIScrollViewcontentInset調UIButton調View調