1 Objective-C提供了几种内存管理方式?请详细举例谈谈你对objective-C的内存管理策略的理解。答:两种,ARC和手动管理(retain 、release 或autorelease)。1.new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1.不再使用该对象时,要负责向该对象发送一条release或autorelease消息.这样,该对象将在使用寿命结束时被销毁. 2.通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,不需...
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?答:#import是Ob...
1、Objective-C的类可以多重继承么?可以采用多个协议么?答:不可以多重继承,可以采用多个协议。2、#import和#include的区别是什么?#import<> 跟 #import""有什么区别?#import能避免头文件被重复包含的问题:1) 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include。使用include要注意重复引用的问题:class A,class B都引用了class C,class D若引用class A与class B,就会报重复引用的错误。2)#im...
问题我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self; [self doSomeBlockJob:^{__strong typeof(weakSelf) strongSelf = weakSelf;if (strongSelf) {...} }]; 那么请问:什么时候在 block 里面用 self,不需要使用 weak self?答案当 block 本身不被 self 持有,而被别的对象持有,同时不产生循环引用的时候,就不需要使用 we...
iOS面试题 ?1.写一个NSString类的实现 +?(id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;? + (id) stringWithCString: (c*****t char*)nullTerminatedCString?? ??????????? encoding: (NSStringEncoding)encoding? {? ? NSString? *obj;? ? obj = [self allocWithZone: NSDefaultMallocZone()];? ? obj = [obj initWithCString: nullTerminatedCString encoding: encoding];? ?...
1.Objective-C 有私有方法吗?私有变量呢?如果没有的话,有没有什么代替的方法?Objective-C 中的方法分为:静态方法和实例方法没有私有方法,有私有变量,所有实例变量默认都是私有的,所有实例方法默认都是公有的私有方法可以用 category 和 extension 来代替2. #import、#include和@class有什么区别? @class一般用于头文件中需要声明该类的某个实例变量的时候用到,它只是声明了一个类名,关于这个类的内部实现都没有告诉编译器,...
序言目前形势,参加到iOS队伍的人是越来越多,培训机构都是一火车地向用人单位输送iOS开发人员,找过工作人可能会更深刻地体会到2016年的就业形势不容乐观,有点打破了生态圈的动态平衡。不过我们的iOS岗位仍然很多,就看我们应聘者的能力有多高有多强,比如技术能力,动手能力,解决问题能力,自学能力,沟通表达能力等等要求越来越高。接下来呢,轩哥和轩哥的朋友一起帮大家整理一下面试题,希望能助一臂之力!OC的理解与特性OC作...
迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中...敬请期待,欢迎提意见。下载地址:https://itunes.apple.com/us/app/mi-tu-de-gao-yang/id910431002?l=zh&ls=1&mt=8 1.写一个NSString类的实现+ (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; + (id) stringWithCString: (c*****t char*)nullTerminatedCString encoding: (NSSt...
int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));上面代码输出结果是:2,5 sizeof:是一个运算符,类型结果为size_t,在头文件中typedef为unsigned int,值通常在编译时计算好,参数类型可以是数组、指针、类型、对象,函数等。注意对齐问题,要以最长类型计算,得出占用字节的大小。strlen:是一个函数,只能用char*做参数,且必须是以\0结尾,在运行时才能得出结果,返回的是字符的实际长度。...
下面是网上找的一些面试题 1. OC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release?为什么?需要与alloc配对使用的方法是dealloc还是release,为什么? 以下是针对MRC(手动内存释放)模式:与alloc语义相反的方法是dealloc,与retain语义相反的方法是release。alloc是为对象在内存中开辟空间,而dealloc则是对象销毁时释放空间。retain方法是对象开辟空间以后使对象的引用计数器加1,...
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:高峰链接:http://www.zhihu.com/question/19604641/answer/44151044来源:知乎1. 什么是arc?(arc是为了解决什么问题诞生的?)2. 请解释以下keywords的区别: assign vs weak, __block vs __weak3. __block在arc和非arc下含义一样吗?4. 使用atomic一定是线程安全的吗?5. 描述一个你遇到过的retain cycle例子。(别撒谎,你肯定遇到过)6. +(voi...
1. 你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?答案:Objecitve-C的重要特性是Runtime(运行时),在#import <objc/runtime.h> 下能看到相关的方法,用过objc_getClass()和class_copyMethodList()获取过私有API;使用objective-cMethod method1 = class_getInstanceMethod(cls, sel1);Method method2 = class_getInstanceMetho...
1.OC的runtime运行机制1> runtime,运行时机制,它是一套C语言库2> 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里面的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制,消息的发送是在runtime时执行的)3> 可以说runtime是OC的底层实现,是OC的幕后执行者4> 有了runtime库,能做什么事情呢?runtime库里面包含了跟...
沙盒的目录结构是怎么样的?各自一般用于什么场合?一、iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox)。每个应用都有属于自己的存储空间,即沙盒 应用只能访问自己的沙盒,不可访问其他区域 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以...
1.Differencebetween shallow copy and deep copy??浅复制和深复制的区别??答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。?深层复制:复制引用对象本身。?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷...