面试题 查漏补缺

你是否接触过OC中的反射机制?简单聊一下概念和使用

1). class反射

通过类名的字符串形式实例化对象。

Class class = NSClassFromString(@"student");

Student *stu = [[class alloc] init];

将类名变为字符串。

Class class =[Student class];

NSStringclassName = NSStringFromClass(class);

2). SEL的反射

通过方法的字符串形式实例化方法。

SEL selector = NSSelectorFromString(@"setName");

[stu performSelector:selector withObject:@"Mike"];

将方法变成字符串。

NSStringFromSelector(@selector

(setName:));



如何访问并修改一个类的私有属性?

1). 一种是通过KVC获取。

2). 通过runtime访问并修改私有属性。



如何实现视图的变形?

答:通过修改view的 transform 属性即可。


你是怎么封装一个view的

1). 可以通过纯代码或者xib的方式来封装子控件2). 建立一个跟view相关的模型,然后将模型数据传给view,通过模型上的数据给view的子控件赋值/**

  *  纯代码初始化控件时一定会走这个方法

  */- (instancetype)initWithFrame:(CGRect)frame {if(self= [superinitWithFrame:frame]) {        [selfsetupUI];    }returnself; }/**

  *  通过xib初始化控件时一定会走这个方法

  */- (id)initWithCoder:(NSCoder*)aDecoder {if(self= [superinitWithCoder:aDecoder]) {        [selfsetupUI];    }returnself; } - (void)setupUI {// 初始化代码}


请简单的介绍下APNS发送系统消息的机制

APNS优势:杜绝了类似安卓那种为了接受通知不停在后台唤醒程序保持长连接的行为,由iOS系统和APNS进行长连接替代。

APNS的原理:

    1). 应用在通知中心注册,由iOS系统向APNS请求返回设备令牌(device Token)

    2). 应用程序接收到设备令牌并发送给自己的后台服务器

    3). 服务器把要推送的内容和设备发送给APNS

    4). APNS根据设备令牌找到设备,再由iOS根据APPID把推送内容展示


OC有多继承嘛?没有的话可以用什么方法替代?

*多继承即一个子类可以有多个父类,它继承了多个父类的特性

*OC的类没有多继承,只支持单继承,如果要实现多继承的话,可以通过类别和协议的方式来实现。

*protocol(协议) 可以实现多个接口,通过实现多个接口可以完成多继承。

*Category(类别)一般使用分类,用category去重写类的方法仅对本category有效,不会影响到其他类与原有类的关系。


分别描述类别(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在视线中有何区别?为什么categories只能为对象添加方法,却不能添加成员变量?

* 类别:在没有原类.m文件的基础上,给类添加方法

* 延展:一种特殊形式的类别,主要在一个.m文件里声明和实现延展的作用,就是给某个类添加私有方法和私有变量。

* 区别: 

延展可以添加属性并且它添加的方法是必须要实现的。延展可以认为是一个私有的类目

类别可以在不知道,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改

并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,应为类别具有更高的优先级

继承可以增加,修改删除方法,添加属性。

* Category只能为对象添加方法,却不能添加成员变量的原因:如果可以添加成员变量,添加的成员变量没有办法初始化。


OC中有私有方法嘛?私有变量呢?如果没有的话,有没有什么代替的方法?

* OC类里面的方法有两种,静态方法和实例方法,但是可以通过把方法的生命和定义都放在.m文件中来实现一个表面上的私有方法,有私有变量,可以通过@private来修饰,或者把生命放到.m文件中,在oc中,所有实例变量默认都是私有的,所有实例方法默认都是公有的。


创建一个对象需要经过哪三个步骤?

* 开辟内存空间

* 初始化参数

* 返回内存地址值


结构体中能定义OC对象嘛?

* 不能,因为结构体当中只能是类型的声明不能进行分配空间。


对于Objective-C,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做?

答:最大的优点是它的运行时特性,不足是没有命名空间,对于命名冲突,可以使用长命名法或特殊前缀解决,如果是引入的第三方库之间的命名冲突,可以使用link命令及flag解决冲突。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    司马DE晴空阅读 1,290评论 0 7
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    卑微的戏子阅读 623评论 0 1
  • 面试题摘录于网络, 用于个人复习使用。 id 声明的对象有什么特性? 答:id 声明的对象具有运行时的特性,即可以...
    普通青年阅读 403评论 0 0
  • 一、基础知识点 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去...
    软件iOS开发阅读 1,278评论 0 26
  • 不懂昆曲,冲着白先勇先生的名号买票去看青春版牡丹亭。虽然不是全本,但是对于我这样一个外行来说,3个小时的时长的确足...
    默默712100阅读 423评论 2 5