1. 程式人生 > 其它 >OC筆記 - 如何防止unrecognized selector sent to instance錯誤

OC筆記 - 如何防止unrecognized selector sent to instance錯誤

防止unrecognized selector sent to instance錯誤

1 - 我們在開發過程中經常會遇到 unrecognized selector sent to instance 錯誤

2 - 程式碼示例:呼叫 Person中不存在的方法,程式不會 crash

// - Person.h

#import <Foundation/Foundation.h>
@interface Person : NSObject

-(void)run;

@end

// -Person.m

#import "Person.h"
@implementation Person

-(void
)run{ NSLog(@"Person run......."); } // 方法簽名 - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector{ if ([self respondsToSelector:aSelector]) { return [super methodSignatureForSelector:aSelector]; } // 返回找不到的方法 return [NSMethodSignature signatureWithObjCTypes:"
v@:"]; } // 找不到的方法都回來到這裡 - (void)forwardInvocation:(NSInvocation *)anInvocation{ NSLog(@"找不到 %@方法",NSStringFromSelector(anInvocation.selector)); } @end

// - main.m

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    
    Person *p1 = [Person new
]; // Person中只有 run方法 [p1 run]; // 呼叫不存在的方法 [p1 makeTest]; [p1 goTest]; return 0; }

日誌資訊