iOS精品文章-面试iOS面试职场

iOS面试题-每日十道-第八天

2016-06-28  本文已影响1198人  放肆肆肆
个人理解 有误的地方 欢迎高手能给指出

一. 请简述iOS中Push原理

第一阶段:应用程序把要发送的消息 目的iPhone的标识打包,发给APNS.
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找 有相应标识的iPhone,并把消息发送到iPhone.
第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知

二. iOS7和iOS7以下常见的兼容性问题和解决方法?

if(IOS8_OR_LATER && [UINavigationBar   conformsToProtocol:@protocol(UIAppearanceContainer)]) {
        [[UINavigationBar appearance] setTranslucent:NO];
    }

三. 怎么用 copy 关键字

一般使用retain或者strong修饰属性时,是使用引用对象的指针指向同一对象,即为同一块内存地址.只要其中有一个指针变量被修饰时所有其他引用该对象的变量都会被改变
而使用copy关键字修饰在赋值时是释放旧对象,拷贝新对象内容.重新分配了内存地址.以后该指针变量被修改时就不会影响旧对象的内容了.
copy只有实现了NSCopying协议的对象类型才有效,常用于NSString和Block

四. 这个写法会出什么问题

    @@property (copy) NSMutableArray *array;

当一个NSMutableArray对象使用initWithArray: 初始化方法创建时,并将该对象赋值给了array属性。那么之后array执行可变数组的方法,如: removeObjectAtIndex: 时会出现unrecognized selector sent to instance的崩溃。原因在于array属性在被赋值(setter)的时候默认执行了copy方法后变为了不可变NSArray对象。

五. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

该类必须要实现NSCopying协议。实现 - (id)copyWithZone:(NSZone *)zone; 方法。
重写copy关键字的setter时,需要调用一下传入对象的copy方法。然后赋值给该setter的方法对应的成员变量。

六. 怎样防止指针的越界使用问题?

七. http请求方式有哪些?

八. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?

九. http 的post与get区别与联系,实践中如何选择它们?

十. 检查内存管理问题的方式有哪些?

Xcode自带检测工具.


纯手动 有地方是个人理解 有误的地方希望大家能给指出 谢谢
大家面试中遇到的问题 也可以留言分享
如果您喜欢 或者对您有点帮助 希望点一下喜欢 谢谢了~~

上一篇 下一篇

猜你喜欢

热点阅读