【提高】面试--三

1.重写一个类用继承还是分类?

继承

2.GCD异步加载一张图片

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

__block UIImage * image = nil;

dispatch_async(queue,^{

NSURL * url = [NSURL urlWithPath:@"xxx"];

NSData * data = [NSData dataWithContentsOfURL:url];

image = [UIImage imageWithData:data];

[self performSelectorOnMainThread:@selector(setImage:)withObject:image];

});

3.显式动画和隐式动画区别

显式动画是人为设置的,隐式动画是改变属性的时候自动生成。

显示动画的属性没有真正改变。

4.block使用注意事项

这个在第二篇有。

5.写一个@property(nonatomic,retain)nsstring * name的 set方法

注意点:不能用self,要使用下划线

6.单例的实现 略

7.

NSLog ( @"-----" );

    int a[5] = {1,2,3,4,5};

    int *p = (int *)(&a+1);

    printf("%d ,%d",*(a+1),*(p-1));

    NSLog(@"%@",@"sd------");

&a+1 加了一个数组 偏移了整个数组的大小

8.老板 前台 员工 老板告诉前台 让前台通知5点开会 谁是观察者?

前台

9.tableview优化

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

一般情况下我们都是在这里进行操作的。该代理方法可以多次执行重复绘制界面。所以绝大部分人都会在这里做一些代码处理

static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

然后加上判断。

但是如果cell内容很多,那么就涉及到性能的问题,还有网络不好的时候下滑会出现卡顿现象。

怎么做?异步加载?但是每一个都加上异步加载的话,如果线程过多还是会卡顿。特别是在下滑的时候。

于是可以利用父类scrollview代理方法处理这个问题。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

可以识别tableview禁止或者减速滑动结束的时候进行异步加载图片

//获取可见部分的对象
       NSArray *visiblePaths = [self.tableView indexPathsForVisibleRows];
        for (NSIndexPath *indexPath in visiblePaths)
        {
           //获取的dataSource里面的对象,并且判断加载完成的不需要再次异步加载
             <code>
        }

同时在cell绘制中也做限制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

         if (self.tableView.dragging == NO && self.tableView.decelerating == NO)
            {
               //开始异步加载图片
                <code>
            }

如果tableview 停止滑动的时候开始异步加载图片
最后也别忘记在内存紧张的情况下释放调所有的异步线程,以保证的你的app不会被系统强制关闭
- (void)didReceiveMemoryWarning{
//  释放调异步加载图片的线程以及所有图片资源对象
<code>
}

还有千万别忘记销毁的时候手动把所有的使用到的代理设置nil

第二点,图片需要缓存机制。

10.MKNetWorking AFNetWorking ASI基于什么写的?简述多个网络请求处理

留坑

你可能感兴趣的:(【提高】面试--三)