Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

Objective-C

うまく使うために

objc++等 Swifty Objective-C | Inside PSPDFKit Even Swiftier Objective-C | Inside PSPDFKit

継続モナドその2

APIをFutureで返す。bindはとりあえず省略。 @interface Future<V> : NSObject - (void)get:(void(^)(V))cb; @end @interface API<I,O> : NSObject - (Future<O> *)getAPI:(I)input; @end typedef void(^CallBack)(id); typedef void(^CPS)(CallBack); @interface Futur</o></i,o></v>…

継続モナド

Objective-Cで継続モナドを書いてみた。ジェネリクスの機能が貧弱なので辛いところが多い。

Objective-C++でクラス

JSONを使った受け渡しを想定して書いてみた。非効率かも。 #import <Foundation/Foundation.h> @class Engine; typedef NSDictionary JSON; @protocol EngineProtocol <NSObject> - (void)engine:(nonnull Engine *)engine message:(nonnull JSON *)message; @end @interface Engine : NSObject </nsobject></foundation/foundation.h>…

一文字づつ区切る

NSStringEnumerationByComposedCharacterSequencesを用いる。 NSString *string= @"ハローワールド"; NSMutableArray *list = [NSMutableArray array]; [string enumerateSubstringsInRange:NSMakeRange(0,string.length) options:NSStringEnumerationByCompose…

NSCalender

NSDateを用いた演算などができる。NSCalendar - Foundation | Apple Developer Documentation iOS8からの日付(NSDate)操作・比較 - Qiita NSDateFormatter NSDateComponent も参考になる dev.classmethod.jp http://www.toyship.org/archives/1665 RTC リア…

数だけかどうか

NSCharacterSetを使って文字列を文字集合に置き換え、decimalDigitCharacterSetで0から9までの文字集合と比較し後者が前者を含めば数だけかわかる。

マクロ関数での注意

defineのマクロ関数でクラス・メソッドに置き換える際、引数の文字と、メソッド名の一部がかぶるとエラーを引き起こす。→ マクロの引数名をかえる。

C++を混載

mmファイルを使うとCの関数(特にObjective-Cのアマルガム的な)が呼べなくなるので注意

NSNotFound

NSNotFoundは型に注意しないでロジックミスになる。注意。NSIntegerとかCGFloatとか - なるようになるかも

duplicate symbols

久々にはまったが、よくみたところヘッダーでimportしていたファイルが.mになっていた。。

商品の値段とNSNumberFormatter

SKProductの価格の加工などで使う。 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.formatterBehavior = NSNumberFormatterBehavior10_4; formatter.numberStyle = NSNumberFormatterCurrencyStyle; formatter.locale = loca…

クラスで作ってみるIF

Objective-C Advent Calendar 2014に登録していたのですが何もネタが思いつかなかったので、クラスで最小の部品を作ってみようかと思い作ってみました。クラスIFです。 KatagiriSo/IF · GitHub 使い方は //ex1 int a = -3; [[IF Condition:((a>=0) ? OK.new …

ヘッダーを眺める

Availability.h AvailabilityMacros.h limits.h stdint.h stdarg.h objc/NSObjCRuntime.h TargetConditionals.h Foundation/NSMetadata.h

調査中の事々

NSSecureCoding NSSecureCoding Protocol Reference以下を読んだ。 Cocoaの日々: NSSecureCoding - セキュアなプロセス間通信への小さな布石 iOS6から。なぜiOS6からかというとXPCサービスの導入で非公開APIとして導入されたらしい。Cocoaの日々: [Mac] Lion…

NSNotificationCenterのまとめ

NSNotificationCenter Class Reference NSNotificationCenter Class Referenceより意訳 An NSNotificationCenter object (or simply, notification center) provides a mechanism for broadcasting information within a program. An NSNotificationCenter o…

CGRectにおける構造体の初期化

CGRectは構造体なので、こんな風に初期化できる。つまりorigin,size毎に指定可能。https://gist.github.com/KatagiriSo/ca60dd14d217249e782d structtest

可変数引数

関数の引数として、そしてそれを他の可変数引数の関数へ投げたい時の例。 void debugFunc = ^(NSString *message, ...){ va_list args; //可変引数へのポインタ va_start(args, message); // 可変引数へのポインタの開始位置をformatに NSString *m = [[[NSS…

NSStringでのフォーマット

ここを参照 String Format SpecifiersString Programming Guide: String Format Specifiers String Programming Guide: String Format Specifiers

ランタイム

導入 ランタイムは次をインポートしておくこと。 #import <objc/runtime.h> Opaque data type(プライベートデータ型) C言語における抽象データ型。 クラスの構成要素を表現するOpaque data type typedef struct objc_method *Method; typedef struct objc_ivar *Ivar; typede</objc/runtime.h>…

クラスダンプ

- (void)dampClass:(Class)c { NSString *clasName = NSStringFromClass(c); NSLog(@"%@", clasName); NSLog(@"method"); { unsigned int count = 0; Method *methodList = class_copyMethodList(c, &count); NSMutableString *m = [NSMutableString string]…