作为一个开发者,有一个学习的气氛跟一个交换圈子特地重要,这是一个我的 iOS 交换群:761407670 不论你是小白还是大牛欢送入驻,分享 BAT, 阿里面试题、面试教训,探讨技术,
1、如何进行 cell 高度的缓存?说一下 UITableView-FDTemplateLayoutCell 的实现原理?
缓存 cell 高度:
- 如果用的 frame,则给 model 增加一个 cellH 的属性,而后在获取数据时计算好高度赋值给 cellH。
- 如果用的 AutoLayout,创立相应布局等同的 cell,计算好高度而后缓存。
FD 的实现:
fd_heightForCellWithIdentifier: configuration:
办法会依据 identifier 以及 configuration block 提供一个和 cell 布局雷同的 template layout cell,并将其传入 fd_systemFittingHeightForConfiguratedCell:
这个公有办法返回计算出的高度。次要应用技术为 runtime。
2、在 Block 中应用 成员变量 (如:_name) 会造成循环援用吗 (比方上面的代码)?如何解决?
typedef void(^TestBlock)(void);
@interface DetailViewController ()
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) TestBlock block;
@end
@implementation DetailViewController
- (void)viewDidLoad {[super viewDidLoad];
self.name = @"fzh";
self.block = ^() {NSLog(@"%@", _name);
};
}
@end
复制代码
会造成循环援用,因为 _name 底层也是通过 self 去获取 (self->_name
)。
->
: 指向构造体成员运算符。
解决方案:
- 强制将 block 置空,代码如下:
weakSelf.block = nil;
复制代码
- 通过 weak、strong self 来解决,代码如下:
__weak typeof(self) weakSelf = self;
self.block = ^() {__strong typeof(weakSelf) strongSelf = weakSelf;
NSLog(@"%@", strongSelf->_name);
};
复制代码
在 block 还是举荐应用点语法去拜访成员变量。
3、isa 指针的作用?它的利用场景?
作用 :isa 指针指向它的类对象, 从而能够找到对象上的办法。
利用场景:
- KVO – isa 混写 (isa-swizzling)
4、形容音讯转发机制?它的利用场景?
如果你给某个对象发送音讯,而该对象没有实现该办法的话,就会进行音讯转发,共有以下三步:
- Method resolution
- Fast forwarding
- Normal forwarding
若以上三步皆不胜利,则会报 unrecognized selector sent to …
的异样。
利用场景:
- 特定奔溃预防解决
- 苹果零碎 API 迭代造成 API 不兼容的奔溃解决
5、组件化的理解,各组件之间如何通信?CTMediator 的底层实现原理?
组件化 :依照我的项目功能模块宰割成多个组件来开发保护,以此来升高我的项目的耦合性。
各组件如何通信 :
- 创立一个 Mediator,各组件通过 Mediator 通信,即 runtime 调度。
- 注册表的形式,用 URL 示意接口,在模块启动时注册模块提供的接口,即 URL/protocol 注册调度。
CTMediator 次要是基于 Mediator 模式和 Target-Action 模式,两头采纳了 runtime 来实现调用。
6、array 的 copy 和 mutableCopy 的区别?mutableCopy 如果每个元素都是对象,那么会开拓新的内存空间吗?如何开拓新的内存空间?
copy 为指针拷贝 (内存地址统一),mutableCopy 为内容拷贝 (内存地址不统一)。
如果元素为对象,不会开拓新的内存空间,因为 mutableCopy 是单层浅复制,咱们须要给对象独自实现一个深复制的办法才能够。
- (id)deepCopy {CYLUser *copy = [[[self class] alloc]
initWithName:_name
age:_age
sex:_sex];
copy->_friends = [[NSMutableSet alloc] initWithSet:_friends
copyItems:YES];
return copy;
}
复制代码
7、Fastlane 在应用中遇到什么问题?
没遇到过啥问题 -_-||,如果又遇到啥问题的同学能够在评论区提出来大家讨论一下。
作者:_GodIsCoder
链接:https://juejin.im/post/684490…