我也需要将参数解析为 NSTimer。所以我想出了创建类别类,这对我有帮助。
以下是在 NSTimer 上创建 Category 类的步骤。
- 右键单击项目并选择“新建文件”
- Cacoa Touch > Objective-C 分类 > Next
- 给类别:添加和类别:NSTimer
- 在 .h 文件中只需创建 placeId 的属性
- 在 .m 中使用 @dynamic 合成它并创建 setter、getter
- 在您的文件中导入该 .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
现在#import "NSTimer+additions.h"
在你的课堂上使用 NSTimer
将参数传递给 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);
}
涉及许多步骤,但希望对您有所帮助。:)