程序员是怎么炼成的---OC题集--练习答案与题目(1)
一、
1. 定义3个类,全部代码。效果:能默写,关键词全部正确。
2. ⾯面向对象和⾯面向过程有什么区别?
答:面向对象以事物(对象)为核⼼,完成事件只是一个任务。面向过程以事件为核心,为了完成任务,进行逐步实现。
类是对象的抽象,对象是类的实例。
4.OO是什么?OOP是什么? 答:OO是⾯面向对象。OOP是⾯面向对象编程。
5,OC中的类是如何定义的? 答:OC中定义类分为两部分: 接⼝口部分:声明了类名,⽗父类名,实例变量,⽅方法。
实现部分:包含了⽅方法的实现。
6,如何创建⼀一个对象?
答:创建对象分为两步:分配内存空间和初始化。
7,实例变量的可⻅见度有哪⼏几种?默认的是什么?
答:@private @protected @public
8,如何对一个类的实例变量进⾏行赋值和取值? 答:添加setter⽅方法进⾏行赋值;添加getter⽅方法进⾏行取值。
9,⾯面向对象编程的三⼤大特征?
答:继承、封装、多态。
10. 什么是封装?简述封装的特点。 答:把实现细节隐藏起来的机制。使⽤用更加简单;变量更加安全;可以隐藏内部实现细节;开发速度加快。
11. #import有什么作⽤用?#import和#include有什么不同?
答:预处理程序在系统中寻找指定的文件,把该⽂件的内容拷贝到程序中出现#import语句的确切位置。 #import可以防止重复编译,#include只能引⼊一次。但是在xcode4.5之后,编译器对#include的重复编译进⾏了的处理。
12. 对象的内存分配在哪⼉儿?内存⼤大⼩小如何确定?
答:分配在堆中。 内存⼤大⼩小由对象中的实例变量决定,即所有实例变量所占字节数的 总和就是对象的内存⼤大⼩小。
13. OC中的方法有几类?OC中有私有方法吗? 答:+静态方法 -动态方法 oc中的方法都是公有的.
14. 如何确定两个方法是否相同?
答:任意两个方法,如果都是实例方法或者都是类方法,方法名相同即认为是同⼀个⽅法。
15,-(id)setName:(NSString *)name :(NSString *)sex age:(int)age的方法 名是什么?
答: setName::age: 定义并实现一个实例变量的setter和getter方法。
16,写出Xcode的快捷键:
1、创建新工程,command+shift+N 2、创建添加一个新文件,command+N 3、程序运行,command+R
4、程序编译,command+B
5、切换历史上/下一个文件,command+control+左右键
6、切换当前文件的头/实现文件,command+control+上下键 7、双斜杠注释;
command+. 8、文件内搜索;
command+F 9、光标移动到行头、行尾;command+左/右 10、以单词为单位移动光标。option+左/右
⼆
1. OC中的类是如何定义的?答:声明部分 @interface 类名:父类 @end 实现部分:@implementation 类名 @end
2. #import ” ”和#import < >有什么区别?
答:<>是从系统路径查找,“”先从工程文件路径中查找,找不到再从系统路径查找。
3. @class有什么作⽤用?#import和@class有什么区别?
答:@class在类的接口文件中,告诉编译器某个字段作为类名使用。避免交叉编译引起错误和减少不必要的编译时间。
#import是将一个文件的全部内容拷贝到当前文件,@class是指明某个字段作为类名使用。
4. OC中能不能多继承?子类继承得到了哪些内容?OC中的根类是什么?
OC中不能多继承,子类继承得到了所有非私有成员,OC中的根类是NSObject
5. 自定义一个类的便利构造器方法。-(void)setName:(NSString*)name andAge:(int)age
6. id是什么?作⽤用是什么?
答:id是一个指向任意类型对象的指针,存储任意类型对象。用于实现多态和动态类型识别和绑定。
7. self和super的作⽤用?
答:self调⽤用本类的方法,super调用父类的方法。
8. 解释属性的特性(nonatomic,atomic,readwrite,redonly,setter=,getter=)
都有什么作⽤用?
assign、retain、copy分别能修饰哪些属性?这些属性的特性,默认的都是哪些?
nonatomic 说明属性的原子的,非线程安全的,不用考虑线程问题,atomic 说明属性具有原子特性,线程安全的
readwrite说明属性是可读可写的,系统默认都是这个特性,readonly属性是只读的,不能赋值,只能读取.
setter= 为setter属性起别名,getter=为getter起别名
assign是系统默认的,修饰基本数据类型 retain 修饰对象数据类型 copy修饰的对象必须实现NSCopying协议
(9)定义一个完整的类,要求:
声明4个属性,一个基本数据类型,三个对象类型;
三个对象类型的属性分别使用assign、retain、copy修饰。
实现三个对象类型的属性对应的setter方法。使用点语法给变量赋值,从变量取值。
写一个people类,在.h文件中声明部分如下
@interface People : NSObject
@property (nonatomic)NSInteger age;
@property (nonatomic,assign)NSString *name;
@property (nonatomic,retain)NSString *gender;
@property (nonatomic,copy) NSString *adderss;
-(void)setAge:(NSInteger)age;
-(void)setName:(NSString *)name;
-(void)setGender:(NSString *)gender;
-(void)setAdderss:(NSString *)adderss;
实现部分
-(void)setName:(NSString *)name
{
_name=name;
}
-(void)setAge:(NSInteger)age
{
_age=age+10;
}
-(void)setGender:(NSString *)gender
{
_gender=gender;
}
-(void)setAdderss:(NSString *)adderss
{
_adderss=adderss;
}
使用点语法给变量赋值,从变量取值。
在main函数中实现
People *p=[People new];
p.name=@"zhangSan";
p.age=23;
p.gender=@"男";
p.adderss=@"河南";
NSLog(@"name=%@,age=%li,gender=%@,address=%@",p.name,p.age,p.gender,p.adderss);
运行结果如下:
(10)如何判断一个对象是否能响应某个方法。
方法一:实例方法 respondsToSelector:判断方法是否属于某个类
People *p=[People new];
if ([p respondsToSelector:@selector(getAge)]==YES)
{
NSLog(@"yes");
}
方法二:静态方法instancesRespondToSelector:用于判断该类是否能响应某个消息
if ([People instancesRespondToSelector:@selector(getAge)]==YES)
{
NSLog(@"yes");
}
(11)如何判断一个对象是否是某个类型。
第一种方法:自己想的比较怪异
People *p=[People new];
if ([NSStringFromClass([People class]) isEqualToString:NSStringFromClass([p class])])
{
NSLog(@"%@", @"yes" );
}
第二种方法:
if ([p isKindOfClass:[People class]] )
{
NSLog(@"%@", @"yes" );
}
第三种方法:
if ([p isMemberOfClass:[People class]] )
{
NSLog(@"%@", @"yes" );
}
第二三种方法有区别
- (BOOL)isKindOfClass:(Class)aClass
Description
Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. (required)
- (BOOL)isMemberOfClass:(Class)aClass
Description
Returns a Boolean value that indicates whether the receiver is an instance of a given class. (required)
可以看出isKindOfClass:的作用域比较宽,子类 isKindOfClass:父类 也是true;而isMemberOfClass,对象必须是直接实例
程序员是怎么炼成的---OC题集--练习答案与题目(1)的更多相关文章
- 程序员是怎么炼成的---OC题集--练习答案与题目(2)
1.objective-c中有垃圾回收机制吗? 没有像java.C#一样的垃圾回收机制,但是有ARC自动引用计数器技术,根据对象的引用技术来判断对象是否还在使用,如果RC=0,则系统就会销毁对象,实 ...
- 程序员是怎么炼成的---OC题集--练习答案与题目(3)
1.init 2.initWithBytes:length:encoding: 3.initWithCharacters:length: 4.initWithCString:encoding: 5.i ...
- Android程序员提加薪被拒,刷2000题跳槽涨薪50%!
为什么想跳槽? 简单说一下当时的状况,我在这家公司做了两年多,这两年多完成了一个大项目,作为开发的核心主力,开发压力很大,特别是项目上线前的几个月是非常辛苦,几乎每晚都要加班到12点以后,周末最多只有 ...
- 打杂程序员之ftp换成外网ip咋就登陆不上?
主动模式ftp N连接到ftp的21端口.然后客户端开端口监听,并通过N+1端口发送命令给FTP服务器.服务器反过来连接用户本地端口. 被动模式解决从服务器到客户端数据端口的入口反向连接被防火墙过滤掉 ...
- .net程序员面试小结(内附一些面试题和答案)
今天下午去面试,面试官和HR小姐姐都很好,没有做面试题,用聊天的方式来交流技术,整个过程很轻松,从中也学到了很多知识. 下面就来总结一下面试过程. 一.深刻了解自己的简历 无论是HR还是技术面试人,首 ...
- Android程序员学WEB前端(5)-HTML(5)-框架集-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76576279 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 框架集: index7. ...
- JAVA程序员面试宝典
程序员面试之葵花宝典 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面.抽象并不5. 打算了解全部问题 ...
- Java程序员面试之葵花宝典
程序员面试之葵花宝典 1.面向对象的特征有哪些方面 抽象:抽象就是忽略一个主题中与当前目标 无关的那些方面, 以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而 只是选择其中的一部 ...
- SOHO 程序员
SOHO 程序员:从事程序开发.维护的家居办公人员. 一.自由程序员 SOHO程序员代表一种自由.弹性而新型的工作方式.SOHO,代表一种新经济.新概念. 是一些热爱软件开发的一族. SOHO程序员 ...
随机推荐
- cf(#div1 B. Dreamoon and Sets)(数论)
B. Dreamoon and Sets time limit per test 1 second memory limit per test 256 megabytes input standard ...
- S2 第三章SQL编程
.if练习 --统计并显示2013-- 的oop考试平均分 --如果平均分在70以上,显示“考试成绩优秀”,并显示前三名学生的考试信息 --如果在70分以下,显示“考试成绩较差”,并显示后三名学生的考 ...
- tableviewcell边距和设置值不符
解决方法: 将Table View Cell的Layout Margins由Default改为Explicit,然后修改上下左右的边距.
- MATLAB实现矩阵分块相乘
要实现一下功能,这里$\bf{x}_i$为行向量 $${\bf{A}} = \left[ \begin{array}{l}{{\bf{x}}_1}\\{{\bf{x}}_2}\end{array} \ ...
- CSS 框模型——规定了元素框处理元素内容、内边距、边框和外边距的方式
转自:http://www.w3school.com.cn/css/css_boxmodel.asp 要知道在父元素:float, rel, abs位置情况下,box模型的变换情况,请见:http:/ ...
- 为什么 Node.js 这么火,而同样异步模式 Python 框架 Twisted 却十几年一直不温不火?
twisted是一个强大的异步网络框架,应用的面也非常广,但是没有这几年才出现的Node.js火,社区.文档也是很少可怜我觉得二者其实在本质上差不多,而且python使用起来还是比较容易一些的 匿名用 ...
- windows下捕获dump之守护进程
一两个月前为产品写了一个独立的exe,由于产品使用的捕获dump是一个现成的进程外exe,如果以资源的方式集成它容易出现安全警告,由于时间关系没有寻求新的解决方法,还是遵循旧方案,不捕获dump. 最 ...
- Visual Studio 2012中的为创建类时的添加注释模板
我们往往需要给类添加注释,我们可以把注释块复制出来,放到文件中,然后在需要的时候,复制.粘贴.这样的重复劳动增加了程序员的体力劳动,而VS中给我们提供了项模版,我们只需要在其中修改一点点模版就能达到这 ...
- 使用ContentResolver添加数据、查询数据
import java.util.ArrayList;import java.util.HashMap;import java.util.Map; import android.os.Bundle;i ...
- Linux 服务器安全技巧
毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一.因此,也就有了许多针对这个话题而生的文章.博客和论坛帖子. 一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制 ...