- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、#import 和 #include 的区别,@class代表什么?@class 和 #import 的区别?#import 和 #import的区别? ? ?答:使用上的区别:? ? ? ? ? ?1、@class 方式一般用在头文件中需要声明该类的某个实例变量的时候用到,在 .m 文件中还需要使用#import;? ? ? ? ? ?2、使用@class方式由于只需要被引用类的名称就行了,而在实现类中由于要使用被引用类中的实例变量和方法,所以需要使用#import来包含被引用类的头文件。? ? ? ? ? ?作用上的区别:? ? ? ? ? #import 会包含引用类的所有信息(内容),包括引用类的变量和方法,而 @class 仅仅是告诉编译器有这么一个类,具体这个类里面有什么信息,则完全不知。? ? ? ? ? 效率上的区别:@class方式不会出现重复编译的问题在创建对象、继承的时候,使用#import;如果在使用时,只考虑他是一个类而不考虑其中的成员,则建议使用@class。#import 和 #include相比起来的好处就是不会引起重复包含。#import是OC导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include 和 #pragma once。? ? ?#import是用来包含系统的头文件;而#import用来包含用户头文件的。二、Objective-C 的内存管理方式及过程? 答: 1、当使用 new,alloc和 copy 方法创建一个对象的时候,则该对象的保留计数器值为1;当不再使用该对象时,则要负责向该对象发送一条 release 或autorelease消息,这样一来,该对象在使用寿命结束时将被销毁;? ? ? ?2、当通过任何其他方法获得一个对象时,假设该对象的保留计数器值为1,而且已经被设置为自动释放,此时则不需要在执行任何操作来确保该对象被清理;但如果打算在一段时间内拥有该对象,则需要保留它并确保在操作完成时将其释放掉;? ? ? 3、如果保留了某个对象,则需要最终释放或自动释放该对象,必须保持retain 方法和 releaser 方法的使用次数相等。三、Objective-C(以下简称OC)有私有方法吗?私有变量呢?? ?答:Objective-C 类里面的方法只有两种:静态方法和实例方法。按照OO的原则就是一个对象只暴露其有用的东西,如果没有了私有方法,对于一些小范围的代码重用就不那么顺手了。? ? 在类里面声明一个私有方法:? ? ? ? @interface Controller:NSObject { NSString *something;}? ? ? ?+(void)thisIsAStaticMethod;? ? ? ?-(void)thisIsInstanceMethod;? ? ? ?@end? ? ? ?@interface Controller(private)? ? ? ? -(void)thisIsAPrivateMethod;? ? ? ?@end? ? ? @private可以用来修饰私有变量? ? ? 在OC中,所有实例变量默认都是私有的,所有实例方法默认都是公有的。四、OC的类可以多重继承吗?可以实现多个接口吗?Category是什么?重写一个类的方式时是使用继承好还是使用分类好?为什么?? ? 答:OC的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++ 的多重继承;Category是指类别,一般情况使用分类较好,使用Category重写类的方法,仅对本Category有效,不会影响到其它类与原有类的关系。五、属性readwrite、readonly、assign、retain、copy、nonatomic各是什么作用?在什么情况下使用?? ?答:1.readwrite是可读可写特性,需要生成 getter 和 setter 方法时使用;? ? ? ? ?2.readonly是只读特性,只会生成 getter 方法,不会生成 setter 方法;当不希望属性在类外发生改变时使用;? ? ? ? ?3.assign 是赋值特性,setter 方法将传入参数赋值给实例变量;仅在设置变量使用 assign;? ? ? ? ?4.retain 表示持有特性,setter 方法将传入参数先保留,再赋值,传入参数的retainCount会 +1;? ? ? ? ?5.copy 表示赋值特性,setter方法将传入对象复制一份;当需要完全一份新的变量时使用;? ? ? ? ?6.nonatomic是非原子操作,决定编译器生成 setter、getter是否是原子
文档评论(0)