重看队二,还是特别特别感动。明知不可为而为之,就算只剩他一个人,也坚定的追随自己的信念和良心,这才是真正的美队精神,老派的孤胆英雄。队二时期的桃和包真是颜值巅峰,好看的每一帧都恨不得截下来保存。
不过在天空战舰上史蒂夫你明明知道巴基不记得你了还上去就喊Buck,你是不是故意找打呀??[允悲] 这么急吼吼的宣布所有权咩?[笑cry]
不过在天空战舰上史蒂夫你明明知道巴基不记得你了还上去就喊Buck,你是不是故意找打呀??[允悲] 这么急吼吼的宣布所有权咩?[笑cry]
消息传递 & 消息转发
1,方法缓存查找
以 SEL (选择因子)为key 在 buck_t 中查找 IMP 的过程
chache_key_t---f(key)----bucket_t
f(key)=key&mask (哈希算法)
2,当前类中的查找
对与已排序好的类用二分查找方法查找
对于没有排序好的类用一般遍历方法查找
3,父类逐级查找
superclass指针找到上一级父类,重复1和2步骤,如果没有找到,继续逐级查找上一级的父类
4,如果仍然没有找到进入消息转发流程
以实例方法为例
系统会首先调用类方法
+ (BOOL)resolveInstanceMethod:SEL
参数为SEL,返回值为BOOL,可以在此方法中告诉系统要不要处理这个方法,返回NO,此消息被忽略,返回YES,进入下一步流程
- (id)forwardingTargetForSelector:(SEL)aSelector
参数为SEL,返回值为id类型,可以返回一个对象,表示让指定的对象处理这个对象,返回nil,消息被中断,如果传入的对象仍然不能处理这个方法,进入下一步流程
-(NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
参数为SEL,返回值为NSMethodSignature *类型,
NSMethodSignature *为函数类型对象,我们需要用这个告诉系统我们的要处理的函数类型时什么,举例,我们可以return一个这个样的[NSMethodSignature signatureWithObjCTypes:@"V@:"] 对像
V 返回值为void
@ 表示函数的接收者是一个OC对象
:表示函数的传入参数是一个SEL
然后在-(void)forwardInvocation:(NSInvocation *)anInvocation
方法内,我们可以收到方法的NSInvocation 对象,并且拿到方法的SEL
NSInvocation什么鬼???[衰]
作用
封装了 方法调用对象、方法选择器、参数、返回值等,可以给对象发送一个参数大于两个的消息;
优势
在iOS 中可以直接调用某个对象的消息的方法有两种
1:performSelector:withObject: 这种类型的方法最多只能有两个参数
2:NSInvocation,它可以设置多个参数;
3、使用方式
通过NSObject 类生成方法签名
通过方法签名生成 NSInvocation
设置方法调用者
设置方法选择器
设置参数
如果有返回值,获取返回值
SEL sel = anInvocation.selector
并且发送此消息给一个对象
Person *person = [[Person alloc] init];
[anInvocation invokeWithTarget:person];
附:以上步骤若不响应,系统会回调
-(void)doesNotRecognizeSelector:(SEL)aSelector 方法
至此全部的消息传递和转发流程结束
1,方法缓存查找
以 SEL (选择因子)为key 在 buck_t 中查找 IMP 的过程
chache_key_t---f(key)----bucket_t
f(key)=key&mask (哈希算法)
2,当前类中的查找
对与已排序好的类用二分查找方法查找
对于没有排序好的类用一般遍历方法查找
3,父类逐级查找
superclass指针找到上一级父类,重复1和2步骤,如果没有找到,继续逐级查找上一级的父类
4,如果仍然没有找到进入消息转发流程
以实例方法为例
系统会首先调用类方法
+ (BOOL)resolveInstanceMethod:SEL
参数为SEL,返回值为BOOL,可以在此方法中告诉系统要不要处理这个方法,返回NO,此消息被忽略,返回YES,进入下一步流程
- (id)forwardingTargetForSelector:(SEL)aSelector
参数为SEL,返回值为id类型,可以返回一个对象,表示让指定的对象处理这个对象,返回nil,消息被中断,如果传入的对象仍然不能处理这个方法,进入下一步流程
-(NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
参数为SEL,返回值为NSMethodSignature *类型,
NSMethodSignature *为函数类型对象,我们需要用这个告诉系统我们的要处理的函数类型时什么,举例,我们可以return一个这个样的[NSMethodSignature signatureWithObjCTypes:@"V@:"] 对像
V 返回值为void
@ 表示函数的接收者是一个OC对象
:表示函数的传入参数是一个SEL
然后在-(void)forwardInvocation:(NSInvocation *)anInvocation
方法内,我们可以收到方法的NSInvocation 对象,并且拿到方法的SEL
NSInvocation什么鬼???[衰]
作用
封装了 方法调用对象、方法选择器、参数、返回值等,可以给对象发送一个参数大于两个的消息;
优势
在iOS 中可以直接调用某个对象的消息的方法有两种
1:performSelector:withObject: 这种类型的方法最多只能有两个参数
2:NSInvocation,它可以设置多个参数;
3、使用方式
通过NSObject 类生成方法签名
通过方法签名生成 NSInvocation
设置方法调用者
设置方法选择器
设置参数
如果有返回值,获取返回值
SEL sel = anInvocation.selector
并且发送此消息给一个对象
Person *person = [[Person alloc] init];
[anInvocation invokeWithTarget:person];
附:以上步骤若不响应,系统会回调
-(void)doesNotRecognizeSelector:(SEL)aSelector 方法
至此全部的消息传递和转发流程结束
峡谷地国家公园Canyonlands National Park,是犹他州最大的国家公园,由一千万年前的洪水冲击与沉积而成。峡谷地被Green River和Colorado River以Y字形从物理上分割成了三个区域,分别是:The Island in the sky, The needles和The maze。
我们的行程比较紧凑,大半天都用在拱门国家公园,下午才赶到峡谷地国家公园,晚上又赶路去往梅萨维德国家公园的小木屋入住,所以Canyonlands我们只去了Island in the sky区域的visitor center和Grand View Point,其他著名景点如下(如果停留2天及以上可以参考一下,如果时间赶,可以参考带♥标志的景点):
Island in the sky区域:
1. ♥Island in the sky visitor center以及附近的shafer canyon overlook
2. Gooseneck Overlook
3. Green River Overlook推荐看日落
4. Buck Canyon Overlook推荐看日落
5. ♥Grand View Point Overlook
6. Whale Rock
7. ♥Mesa Arch网上推荐看日出
The maze区域:
Maze Overlook
这个区域并没有开发,不建议前往
The needles区域:
1. The needles visitor center
2. Big Spring Canyon Overlook
3. Wooden Shoe Arch Overlook
VLOG明天上传B站(欢迎来骚扰mrs_dudu)
#旅行# #美国旅行# #美国国家公园探险# #旅行vlog# #遇见另一种生活#
我们的行程比较紧凑,大半天都用在拱门国家公园,下午才赶到峡谷地国家公园,晚上又赶路去往梅萨维德国家公园的小木屋入住,所以Canyonlands我们只去了Island in the sky区域的visitor center和Grand View Point,其他著名景点如下(如果停留2天及以上可以参考一下,如果时间赶,可以参考带♥标志的景点):
Island in the sky区域:
1. ♥Island in the sky visitor center以及附近的shafer canyon overlook
2. Gooseneck Overlook
3. Green River Overlook推荐看日落
4. Buck Canyon Overlook推荐看日落
5. ♥Grand View Point Overlook
6. Whale Rock
7. ♥Mesa Arch网上推荐看日出
The maze区域:
Maze Overlook
这个区域并没有开发,不建议前往
The needles区域:
1. The needles visitor center
2. Big Spring Canyon Overlook
3. Wooden Shoe Arch Overlook
VLOG明天上传B站(欢迎来骚扰mrs_dudu)
#旅行# #美国旅行# #美国国家公园探险# #旅行vlog# #遇见另一种生活#
✋热门推荐