iOS 面试题:OC基本概念题<续>

第一,怎么确定一个方法的方法名

去掉减号,加号,去掉返回值,去掉参数类型,去掉参数,剩下的就是方法名了

第二,id指向任何对象类型,可以用assign,copy,retain,根据需要使用

第三,autorelease 在什么时候释放?

在碰到autoreleasepool的时候释放(可以把好几个相同的变量放几个不同的池里)

第四,协议的方法默认是@required

第五,字典集合的特点?

字典是以键值对形式的保存元素

只能存储对象,不能存储基本数据类型

第六,如何定义一个类?

类的接口部分包含实例变量,属性,和方法

可以把声明和实现都放到.h文件里

一对文件(Person.h Person.m)可以定义多个类

类比较抽象,对象比较具体

第七,什么是类目?

类目可以为没有源代码的类,添加方法

类目中的方法和原类中的方法级别一样,

第八,重写用继承把父类方法拿到子类重写

第九,什么是对象?

对象是类的实例,如美国总统奥巴马

第十,属性的属性,

具体请点击以下链接

OC 属性的属性

第十一,不要在set方法内部自己调自己,会陷入死循环

第十二,可变字符串与不可变字符串的区别

NSMutableString * str = [[NSMutableString alloc]initWithFormat:@“123”];

NSLog(@“str = %p”,str);

[str appendFormat:@“456”];

NSLog(@“str = %p”,str);

上面两次打印的地址是一样的

第十三,一个字典的key是唯一的,所以字典具有排重的功能,打印字典的时候,左边是key,右边是value

第十四,在类方法中不能使用实例变量

第十五,dealloc的注意事项(有系统自动调用)

开ARC不能写[super dealloc]的方法

OC不能重载(方法名一样,参数不一样),只能重写,

第十六,单例方法只是为了得到唯一的实例,方法中通常不带参数

单例相当于全局变量,不能释放,

比如用户登录,把用户信息写在单例里面

第十七,初始法作用是,为变量赋初值

第十八,@package

@package(框架级别)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问.

第十九,队列先进先出,栈先进后出

第二十,动态绑定

NSString * testObject = [[NSData alloc]init]

编译时是NSString类型 (不检测)

运行时是NSData类型   (检测)

此处比较粗略,具体OC的动态特性请点击下面链接

深入Objective-C的动态特性

第二十一,block修改外部变量时,用__block修饰

第二十二,delegate或者protocol申请属性的时候为什么用assign而不是retain?

协议的声明,用assign属性,避免了循环引用,欲知详情请点击下面.

delegate或者protocol申请属性的时候为什么用assign而不是retain

ios中常用的遍历运算方法

遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:

经典for循环

for in

makeObjectsPerformSelector

kvc集合运算符

enumerateObjectsUsingBlock

enumerateObjectsWithOptions(NSEnumerationConcurrent)

dispatch_apply

第二十四,属性是方法不是变量  category里面就是方法不会添加变量

第二十五,看到遍历构造器,要想到autoreleasepool  ,有时候便利构造器经常会出现内存泄露的错误

第二十六,协议是多个类分享的一个方法列表,在协议中所列出的方法没有相应的实现,有其他人来实现

协议的property声明用assign特性,因为要防止对象和其他代理对象之间互相引用,导致无法释放内存

第二十七,类目,延展,协议,继承的区别

类目:类目可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除原有方法,但是无法添加实例变量

延展:延展可以同时添加实例变量和方法,而且添加的方法必须实现,可以视为一个私有的类目

协议:协议是多个类共享的一个方法列表,在协议中所列出的方法没有相应的实现

继承:不但可以添加实例变量和方法,也可以重写原有类的方法

第二十八,当autorelease没有autoreleasepool

因为便利构造器产生的对象如果没有autoreleasepool 的话是无法释放的,所以当循环数值过大时产生的对象会越来越多而且使用过的对象无法释放内存占用越来越多,严重影响性能所以要在for循环中使用atutoreleasepool,即释放内存从而避免内存泄露.

iOS 面试题:OC基本概念题<续>

时间: 2024-10-21 04:57:31

iOS 面试题:OC基本概念题<续>的相关文章

iOS 面试题:OC基本概念题

1.什么是类和对象? 类是一组具有同样特征和功能的事物的抽象 对象描写叙述了一个物体的特征和行为实现 类是对象的抽象 对象是类的实例 2.OC中定义类,创建对象,使用对象. OC中定义类分为接口部分,实现部分 接口部分:对外声明类的特征和行为 实现部分:实现方法,即类的行为实现 创建对象须要进行分配内存空间和初始 3.声明方法,依据需求.区分:方法声明,方法实现,方法运行 4.继承.继承的全部特点 子类能够继承父类全部的声明的方法和除私有的以外实例变量 父类不能使用子类所创建的方法和实例变量 5

iOS 面试题:OC标题的基本概念&amp;lt;延续&amp;gt;

第一,如何确定一个方法方法名称 删除减号,加,删除返回值,删除参数类型,删除参数,剩下的就是的方法名 秒,id,能够用assign,copy,retain,依据须要使用 第三,autorelease 在什么时候释放? 在碰到autoreleasepool的时候释放(能够把好几个同样的变量放几个不同的池里) 第四,协议的方法默认是@required 第五,字典集合的特点? 字典是以键值对形式的保存元素 仅仅能存储对象,不能存储基本数据类型 第六,怎样定义一个类? 类的接口部分包括实例变量,属性,和

iOS谋职之OC面试题

iOS求职之OC面试题 IOS求职之OC面试题 1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #import""有什么区别? #import能避免头文件被重复包含的问题: 1) 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 使用include要注意重复引用的问题: class A

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

iOS面试题系列之Objective-C相关

1.简述你项目中常用的设计模式.它们有什么优缺点? 常用的设计模式有:代理.观察者.单例. (1)单例:它是用来限制一个类只能创建一个对象.这个对象中的属性可以存储全局共享的数据.所有的类都能访问.设置此单例中的属性数据. 优点:是它只会创建一个对象容易供外界访问,节约性能. 缺点:是一个类只有一个对象,可能造成责任过重,在一定程度上违背了"单一职责原则".单例模式中没有抽象层,所以单例类的扩展有很大的困难.不能过多创建单例,因为单例从创建到程序关闭前会一直存在,过多的单例会影响性能,

iOS面试题,希望给面试的同学一点帮助。

iOS基础面试题 1.用objective-c写一个插入法排序 2.写一个NSString类的实现 + (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; + (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding{ NSString *

半年努力,我终于把这100家企业iOS面试题整理完了(附答案)!

####100家知名企业今年来iOS面试题合集: 你要的这里都有: 企业要的这里也有: 从基础开始到进阶.深入底层 整理出188个面试题,全是干货 这些全部是题目跟类目,每个题目都会有相对的答案,由于字数太多所以我整理出一个文档,文档获取地址,作者创建的iOS行业交流群:763164022,加群在群文件下载 ####目录展示: 1.swift和oc的区别2.编译链接3.synthesize & denamic4.在项目开发中常用的开发工具有哪些?5.UITableView & UIColl

最全的iOS面试题及答案-转载

1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现多个接口可以完成C++的多重继承:Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. 2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?

[转载]iOS面试题总

转载自:http://blog.sina.com.cn/s/blog_67eb608b0101r6xb.html (2014-06-13 20:23:33) 转载▼ 标签: 转载   crash 原文地址:iOS面试题总作者:唯一的弟子 1.简述OC中内存管理机制.与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonato