また、パラメーターを NSTimer に解析する必要もありました。それで、私はカテゴリクラスの作成を思いついたので、それが役に立ちました。
NSTimer を介して Category クラスを作成する手順は次のとおりです。
- プロジェクトを右クリックし、「新しいファイル」を選択します
- Cacoa Touch > Objective-C カテゴリ > 次へ
- カテゴリを指定: 追加 & カテゴリをオン: NSTimer
- .h ファイルで placeId のプロパティを作成するだけです
- .m で @dynamic を使用して合成し、セッター、ゲッターを作成します
- その .h ファイルをファイルにインポートします。
NSTimer+additions.h ファイル
#import <Foundation/Foundation.h>
@interface NSTimer (additions)
@property(nonatomic,retain) NSString *additionalTag;
@end
NSTimer+additions.m ファイル
#import "NSTimer+additions.h"
#import <objc/runtime.h>
NSString *const additionalTagKey = @"additionalTagKey";
@implementation NSTimer (additions)
@dynamic additionalTag;
- (void)setAdditionalTag:(NSString*)aObject
{
objc_setAssociatedObject(self, additionalTagKey, aObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSString*)additionalTag
{
return objc_getAssociatedObject(self, additionalTagKey);
}
@end
NSTimer#import "NSTimer+additions.h"
を使用してクラスで
パラメータを NSTimer に渡す
-(void)testDemoMethodPassTimer{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(timerTick:)
userInfo:nil
repeats:YES];
timer.additionalTag = @"parameter passed to timer";
ClassA *testA = [[ClassA alloc]init];
STAssertNoThrows([testA testDemoMethod:timer]);
}
タイマーからパラメータを取得する
-(void)demoMethod:(NSTimer *)timer{
NSLog(@"My Parameter: %@",timer.additionalTag);
}
多くの手順が含まれますが、うまくいけば少しは役に立ちます。:)