平时写代码总是一口气的写, 从没有思考过为什么要这么写。得改,,,
一、如何设置h5页面的高度?有图片的话加载延迟会不会高度会不会受影响?webView里面想做点击放大图片的话怎么做?
我记得是在加载完页面的方法里面设置一下就可以,不会有问题。但今天面试官说,如果页面里面有图片是会有问题的,因为图片没有加载出来的话就没有高度,图片加载出来之后页面的高度是会变化的。这个说法想想也是有道理的。
查找了之前写的活动页面,上面是原生的,下面嵌套的h5,高度也是直接在finish里面获得的高度,并没有问题。
- (void)webViewDidFinishLoad:(UIWebView *)webView{
MyLog(@"--------------------网页加载结束");
CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
self.desHeight = height;
[self.tableView reloadData];
// [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
}
。。。当时的webView是写在cell里面,所以会出现一个问题。webView是可以滑动的,cell也是可以滑动的,然后就冲突了。
再然后把webView的滑动禁止,问题就解决了。
webView.userInteractionEnabled=NO;
上面提到的“webView是写在cell里面”,那么cell里面如何设置呢?
@property(nonatomic,weak) UITableViewCell *detailCell;
static NSString *cellID=@"webCell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID];
if (!cell) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
self.detailCell=cell;
UIWebView *webview=[self.detailCell.contentView viewWithTag:1000];
if (webview) {
webview.frame=CGRectMake(5,30,kScreenW - 10,self.desHeight-30);
} else {
UIWebView *webView =[[UIWebView alloc] initWithFrame:CGRectZero];
webView.tag=1000;
webView.delegate = self;
webView.userInteractionEnabled=NO;
webView.backgroundColor=[UIColor clearColor];
[self.webView setScalesPageToFit:YES];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/sys/home/suggestedReading?fileEntryId=%@",URL_BASE,self.activityId]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];
[webView loadRequest:request];
[cell.contentView addSubview:webView]; self.webView = webView;
}
return self.detailCell;
一直觉得把webView放cell里面不好。但也没有想到很好的解决办法
二、适配iPhoneX(上面的高度是多少,下面的安全距离是多少,如何设置)和iPhone10(对单元格进行编辑会出现一个效果(啥效果我忘了),如何避免)?
iphoneX前段时间是适配过的,记得当时只改变了一下navigation的高度。今天打开了X出来之前的一个项目,也是好好的,奇怪,当时做的时候X还没有出来,难道我以前的框架就适配X?
三、realm的底层是怎么实现的?
四、GCD有队列吗?有几种队列?
五、朋友圈的cell如何实现?回复的评论如何实现?cell的高度如何设置性能高?
六、AVPlayerViewController需要把音视频全部缓存之后才能播放,AVPlayerViewController可以做缓存吗?
七、类别能加属性吗?如果可以,如何加属性?
八、Block与代理有什么区别?Block是如何实现的?为什么会循环引用?
block 更轻型,使用更简单,能够直接访问上下文,这样类中不需要存储临时数据,而是直接存储一个代码块的实现部分,而不需要再去定义一个函数。
九、dealloc什么时候会调用?什么情况下会写到dealloc?
1、这个类被release的时候会被调用;
2、这个对象的retain count为0的时候会被调用;
或者说一个对象或者类被置为nil的时候;
在webview没有加载完页面就返回的时候,需要在dealloc里面把webview 的delegate置为nil
十、项目是用什么模式做的?解释一下MVC?Controller能调用Model吗,Model能调Controller吗?
十一、如何测试内存泄漏,Instruments是怎么检测出来有内存泄漏的?
十二、id 和instancetype的区别?
在ARC(Auto Reference Count)环境下:
instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型, 运行时检查类型.
在MRC(Manual Reference Count)环境下:
instancetype和id一样,不做具体类型检查
区别2:
id可以作为方法的参数,但instancetype不可以
instancetype只适用于初始化方法和便利构造器的返回值类型
1、tableview卡顿
2、runtime
3、加快编译速度
4、缓存图片怎么清理(怎么删除最近不常用的图片)
5、组件化,智能单元测试
6、http请求头有哪些
7、四次挥手
8、进程阻塞
9、kvo 消息 代理 block灵活运用
10、MVVM
11、如何实现一个下载器
12、一张1g的图片怎么上传
13、组件化开发
1、runloop
2、离屏渲染
3、监控日志,LP
4、检查内存泄漏的俩种方式
5、三次握手
6、SDWebImage
7、提测试工具
8、用到哪些第三方
9、用到的框架MVC
网友评论