美文网首页
思考的问题

思考的问题

作者: 爱笑的Mr张 | 来源:发表于2018-03-15 18:15 被阅读0次

    平时写代码总是一口气的写, 从没有思考过为什么要这么写。得改,,,

    一、如何设置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

    相关文章

      网友评论

          本文标题:思考的问题

          本文链接:https://www.haomeiwen.com/subject/ofkhqftx.html