具體可見 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
//規則: 傳回值 函數名: 具體參數個數 如 (NSString*)fun1:(NSString*)param1對應 “@@:@”,列印如下
<NSMethodSignature: 0x7a2dc790>
number of arguments = 3
frame size = 12
is special struct return? NO
return value: -------- -------- -------- --------
type encoding (@) '@'
flags {isObject}
modifiers {}
frame {offset = 0, offset adjust = 0, size = 4, size adjust = 0}
memory {offset = 0, size = 4}
argument 0: -------- -------- -------- --------
argument 1: -------- -------- -------- --------
type encoding (:) ':'
flags {}
frame {offset = 4, offset adjust = 0, size = 4, size adjust = 0}
argument 2: -------- -------- -------- --------
frame {offset = 8, offset adjust = 0, size = 4, size adjust = 0}
@property (readonly) NSUInteger numberOfArguments;
//參數個數
- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx NS_RETURNS_INNER_POINTER;
//取參數類型
@property (readonly) NSUInteger frameLength;
- (BOOL)isOneway;
@property (readonly) const char *methodReturnType NS_RETURNS_INNER_POINTER;
//傳回值類型
@property (readonly) NSUInteger methodReturnLength;
//傳回長度
二、NSInvocation對原來簽名的方法執行新的方法,必須指定Selector和Target,invoke或invokeWithTarget執行
+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)sig;
//類方法 生成簽名方法執行個體
@property (readonly, retain) NSMethodSignature *methodSignature;
//傳回包裝的簽名方法
- (void)retainArguments;
@property (readonly) BOOL argumentsRetained;
@property (nullable, assign) id target;
//傳回對象
@property SEL selector;
//傳回包裝的SEL
- (void)getReturnValue:(void *)retLoc;
//傳回簽名方法的傳回值
- (void)setReturnValue:(void *)retLoc;
//設定簽名方法的傳回值
- (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
//傳回簽名方法的參數 index=2,取第一個參數
- (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
//設定簽名方法參數
- (void)invoke;
//執行方法
- (void)invokeWithTarget:(id)target;
//指定對象執行 相當于 setTarget和invoke
三 、NSObject類的方法
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector //中進行未定義方法的封裝
- (void)forwardInvocation:(NSInvocation *)anInvocation;//對封裝的方法進行調用
------------------越是喧嚣的世界,越需要甯靜的思考------------------
合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。
積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千裡;不積小流,無以成江海。骐骥一躍,不能十步;驽馬十駕,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鳝之穴無可寄托者,用心躁也。