使用 NSTimer 時(shí),發(fā)現(xiàn)有這么2個(gè)東西,也不是很理解,簡(jiǎn)單使用如下,跟直接調(diào)用方法效果類似。更多深入求教育,謝謝。
- 1 有個(gè)類,存在方法,別的類調(diào)用。自己調(diào)用自己的也一樣。
@interface TestClass : NSObject
- (NSString *)appendStringWithstring1:(NSString *)str1 string2:(NSString *)str2;// 具體實(shí)現(xiàn) 就是 拼接字符串。
@end
- 2 其他類調(diào)用
// 要調(diào)用 方法的 類
TestClass *testClass = [[TestClass alloc] init];
// 方法的 2 個(gè)參數(shù)
NSString *str1 = @"111";
NSString *str2 = @"222";
// 需要實(shí)現(xiàn)的方法
SEL testSeletor = @selector(appendStringWithstring1:string2:);
// 簽名?
NSMethodSignature *sig = [[TestClass class] instanceMethodSignatureForSelector:testSeletor];
// 調(diào)用 設(shè)置:目標(biāo)信號(hào),執(zhí)行對(duì)象 與 方法
NSInvocation *testInvocation = [NSInvocation invocationWithMethodSignature:sig];
[testInvocation setTarget:testClass];
[testInvocation setSelector:testSeletor];
// 傳入?yún)?shù),index 01 就是我們常寫(xiě)的 self 和 @select,默認(rèn)了。所以我傳參數(shù) 從2 開(kāi)始
[testInvocation setArgument:&str1 atIndex:2];
[testInvocation setArgument:&str2 atIndex:3];
// 回調(diào) 結(jié)果
NSString *testResult = nil;
[testInvocation retainArguments];
[testInvocation invoke];
[testInvocation getReturnValue: &testResult];
// 打印 處理結(jié)果:即拼接字符串
NSLog(@"%@",testResult);
實(shí)際上我們都直接調(diào)用
水平不夠,只能寫(xiě)這么多了。
NSString *result = [testClass appendStringWithstring1:str1 string2:str2];