牛客网 iOS 题 90-106

牛客网 iOS 题 90-106

90.iOS 中持久化方式有哪些?

  1. 属性列表文件
  2. 对象归档
  3. SQLite 数据库
  4. CoreData

答案:<font color=“LightYellow”>1,2,3,4</font>

1.属性列表文件:即 NSUserDefault 存储,实际是本地生成一个 plist 文件,将所需属性存储在 plist 文件中
2.对象归档:本地创建文件并写入数据,文件类型不限
3.SQLite 数据库:本地创建数据库文件,进行数据处理
4.CoreData:同数据库处理思想相同,但实现方式不同

91.NSURLConnection 类的同步请求方法是?

  1. + sendSynchronousRequest: returningResponse: error:
  2. - initWithRequest: delegate:
  3. - initWithRequest: delegate: startImmediately:

答案:<font color=“LightYellow”>1</font>

2 和 3 都是异步方法,需要设置 delegate 属性

92.NSURLConnectionDelegate 协议中的方法有哪些?

  1. connection: didReceiveData:
  2. connection: didFailWithData:
  3. initWithRequest: delegate:
  4. connectionDidFinishLoading:

答案:<font color=“LightYellow”>1,2,4</font>

2 属于 NSURLConnectionDelegate
1,4属于 NSURLConnectionDataDelegate
而 NSURLConnectionDataDelegate 的声明:@protocol NSURLConnectionDataDelegate <NSURLConnectionDelegate>

93.单例类 NSNotificationCenter 提供信息广播通知,它采用的是观察者模式的通知机制。

答案:<font color=“LightYellow”>1</font>

94.NSAssert 类似的宏有哪些?

  1. NSAssert1
  2. NSAssert2
  3. NSAssert3
  4. NSAssert4

答案:<font color=“LightYellow”>1,2,3,4</font>

根据 API 有:NSAssert,NSAssert1,NSAssert2,NSAssert3,NSAssert4,NSAssert5

95.iOS 单元测试框架有哪些?

  1. OCUnit
  2. GHUnit
  3. OCMock
  4. NSXML

答案:<font color=“LightYellow”>1,2,3</font>

  • OCUnit 是 OC 官方测试框架,现在被 XCTest 所取代
  • GHUNit 和 OCMock 都是第三方的测试框架
  • NSXML 不属于框架,是 Foundation 框架中的一个类,用于解析 xml 数据

96.NSXMLParser 构造方法有哪些?

  1. initWithContentsOfURL
  2. initWithData
  3. initWithStream
  4. initWithContentsOfFile

答案:<font color=“LightYellow”>1,2,3</font>

本地 xml 文件的解析必须转化成 NSData 才行

97.判断是否为 iPad 设备语句是?

  1. if([[UIDevice currentDevice] userInterFaceIdiom] == UIUserInterfaceIdiomPhone){...}
  2. if([[UIDevice currentDevice] userInterFaceIdiom] != UIUserInterfaceIdiomPhone){...}
  3. if([[UIDevice currentDevice] userInterFaceIdiom] == UIUserInterfaceIdiomPad){...}

答案:<font color=“LightYellow”>3</font>

  • UIUserInterfaceIdiomUnspecified = -1
  • UIUserInterfaceIdiomPhone //iPhone and iPod touch style UI
  • UIUserInterfaceIdiomPad //iPad style UI

98.UIPopoverController 控制器的常用方法和属性?

  1. presentPopoverFromBarButtonItem: permittedArrowDirection:animated: 呈现 Popover 视图方法
  2. dismissPopoverAnimated: 关闭 Popover 视图方法
  3. PopoverVisible 判断 Popover 视图是否可见
  4. popoverArrowDirection 判断 Popover 视图箭头的方向

答案:<font color=“LightYellow”>1,2,3,4</font>

这个类在9.0后被 Deprecated 了

99.UISplitViewController 控制器可以呈现屏幕分栏视图的效果,MasterView 占有320点固定大小。

答案:<font color=“LightYellow”>2</font>

从8.0开始,splitViewController 可以在iPhone 中使用,MasterView 的宽度是整个屏幕的宽度,所以不是固定的320.

100.模态视图专用属性有哪些?

  1. UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone 只能全屏呈现
  2. UIModalPresentationPageSheet,它的宽度是固定的768点,在 iPad 竖屏情况下则全屏呈现
  3. UIModalPresentationFormSheet,它是固定的540x620点,无论是横屏还是竖屏情况下呈现尺寸都不会变化
  4. UIModalPresentationCurrentContext,它与父视图控制器有相同的呈现方式

答案:<font color=“LightYellow”>1,2,3,4</font>

101.NSXML 框架中核心的是 NSXMLParser 和它的委托协议 NSXMLParserDelegate,NSXMLParserDelegate 常用方法有哪些?

  1. parserDidStartDocument
  2. parser:foundCharacters
  3. parser:didStartElement:namespaceURL:qualifiedName:attributes
  4. parser:didEndElement:nameSpaceURL:qualifiedName
  5. parserDidEndDocument

答案:<font color=“LightYellow”>1,2,3,4,5</font>

102.网页错误,跳转到 题22

103.用 Objective-C 定义并实现一个基于数组的循环队列,当队列放满需支持动态的拓展队列长度

LoopQueue.h:

#import <Foundation/Foundation.h>

@interface LoopQueue:NSObject
- (instancetype)initWithItem:(NSObject *)item andCapacity:(NSUInteger)capacity;
- (instancetype)init;
- (void)enqueue:(NSObject *)item;   // 进队
- (NSObject *)dequeue;              // 出队
@end

LoopQueue.m:

#import "LoopQueue.h"

#define DEFAULT_SIZE 10

@interface LoopQueue ()
@property ( nonatomic ) int first;
@property ( nonatomic ) int last;
@property ( nonatomic ) NSUInteger capacity;
@property ( nonatomic ) NSMutableArray *elementData;
@end

@implementation LoopQueue
-( instancetype )initWithItem:( NSObject *)item andCapcity:( NSUInteger )cap
{
    self.first = - 1 ;
    self.last = - 1 ;
    self.capacity = cap;
    self.elementData = [ NSMutableArray arrayWithCapacity:cap];
    if (item == nil ) {
        return self ;
    }
    [ self.elementData addObject:item];
    return self ;
}
-( instancetype )init
{
    self = [[ LoopQueue alloc ] initWithItem: nil andCapcity: DEFAULT_SIZE ];
    return self ;
}
-( BOOL )isFull
{
    return ( _first == 0 && _last == _capacity - 1 ) || _first == _last + 1 ;
}
-( BOOL )isEmpty
{
    return self.first == - 1 ;
}
-( void )enqueue:( NSObject *)item
{
    if (![ self isFull ]) {
        if ( _last == _capacity - 1 || _last == - 1 ) {
            self.elementData [ 0 ] = item;
            _last = 0 ;
            if ( _first == - 1 ){
                _first = 0 ;
            }
        } else {
            self.elementData [++ _last ] = item;
        }
    } else {
        self.capacity ++;
        self.last ++;
        [ self.elementData addObject:item];
        
    }
}
-( NSObject *)dequeue
{
    if (![ self isEmpty ]) {
        NSObject *tmp = self.elementData [ _first ];
        if ( _first == _last ){
            _last = _first = - 1 ;
        } else if ( _first == _capacity - 1 ){
            _first = 0 ;
        } else {
            _first ++;
        }
        return tmp;
    } else {
        NSLog ( @"Fail:Queue is Empty" );
        return nil ;
    }
}

104.为 UIImageView 添加一个简易的显示远程图片的方法

- (void) setImageWithURL:(NSURL *)url holderImage:(UIImage *)holderImage
图片小于200kb,不用考虑多个 UIImageView 对象的情况

答案:通过 category 给 UIImageView 添加这个个方法,代码如下

- (void) setImageWithURL:(NSURL *)url holderImage:(UIImage *)holderImage {
   NSData *data = [NSData dataWithContentsOfURL:url];
    if (data) {
        holderImage = [UIImage imageWithData:data];
    }
}

105.UITableView 需要实现哪些代理?列出 UITableView 代理中必须实现的与其他一些常用的函数。

答案:需要实现的代理有两个

  • UITableViewDelegate
  • UITableViewDataSource

必须实现的方法两个:

  • cellForRowAtIndexpath
  • numberOfRowsInSection

查看源代码,@required 是必须要实现的,@optional 是选择实现的

106.小明写了一个基于 TCP 协议的 iOS 聊天工具,随着用户的增多,聊天的过程中不时出现卡顿,程序失去响应的问题,请帮忙分析小明的程序可能出现了什么问题?如果你是小明的话,如何设计程序结构,保证网络的延迟问题不会影响用户的 UI 操作。

  • 原因分析:网络延时造成程序阻塞,进程在等待网络响应时间过长,出现卡顿现象
  • 改进办法:采用多线程,负责网络的通信任务交给一个专门的后台进程处理
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,598评论 1 180
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 4,131评论 2 19
  • 1.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了...
    喝完酒再来杯拉菲阅读 1,008评论 0 2
  • 一、 郑阳县许久没有嫁娶了,今日的送亲队伍自然比以往倍受关注。原本喑哑沉闷听不出喜意的喇叭唢呐渐行渐远,淹没在嘈杂...
    书姝阅读 1,303评论 6 13
  • 这里还是我和老公的关系。我们之间实在是有太多问题。 我好像总是在命令他,让他做这做那。0分 我很乐意我们之间存在差...
    mhz1阅读 158评论 0 0