A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 代战 中级黑马   /  2015-12-16 08:26  /  848 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*

属性的作用域:

属性的作用域由权限修饰符控制,不同的权限修饰符作用域不同

主要有四大类:
@private:
只能在当前类的对象方法中直接访问
@protected
可以在当前类以及子类的对象方法中直接访问
@public
任何地方都可以直接访问
@package
同一个体系内可以直接访问 介于@private和@public 之间

不写修饰符:
1.如果上面有定义别的属性,则跟随上一个属性的权限
2.如果上面没有别的属性默认是@protected


*/

1.属性用什么来控住作用域?
权限修饰符

2.属性有哪几种权限?主要是哪三种?
public
protected
private
package

主要的是上面的三种 ..............package不常用

3.不定属性权限时默认的是什么?
分两种情况
1.如果上面有定义别的属性 则跟随上一个属性的权限

2.如果上面没有别的属性 则默认是protected

4.一个类只有实现没有声明可不可以使用 若使用则默认权限是什么?
没有声明只有实现可以 不使用,编译不会报错

默认权限是 private

5.只有类的声明能创建对象吗?只有实现呢?
只有类的声明 不能创建对象

只有类的实现  可以创建对象

/*
#import <Foundation/Foundation.h>
//@interface Person:NSObject
//-(void)run;
//@end

@implementation Person:NSObject

-(void)run{
NSLog(@"不明白!");
}

@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person* per =[Person new];
[per run];

}
return 0;
}
*/

7.类的实现中定义属性默认是什么权限?

private 私有属性 只有在本类中可以直接使用 其他地方只能使用 set get 方法时可以使用

8.@property能做哪三件事?用了@property还能自己定义set 与 get 方法吗?
第一步:查看是否创建了_属性名  如果没有则自动生成标准格式的属性声明 有则不创建

第二步:检查是否有标准格式的set 与 get 的声明 如果有则不创建 没有则自动生成标准格式的声明
第三步:检查是否有标准格式的set 与 get方法的实现 如果没有则自动生成标准格式的实现 有则不创建
/*
注意:
@property 自动生成的 属性是 private 的权限
如果检查有手动编写的标准 set 与  get 方法的声明与实现 则不会在自动实现对属性定义的创建
*/

9.@property什么时候不起作用?
分两种情况
1.如果手动编写了 标准格式的 属性的声明与 set  与 get 方法的声明与实现 则不起作用

2.如果手动编写了标准格式的  set  与 get 方法的声明与实现 而没有属性的定义 则也会不起作用

10.@synthesize是在xcode哪个版本之前使用的

xcode 4.4 之前 用来与@property 对应做属性的实现

11.NSObject * 和 id 的区别

1.id指针调用对象独有的方法 不需要强制转换 而NSObject * 需要强制转换

2.id指针使用点语法 必须强转换成真实类型

12.id指针的作用是什么?
可以表示任意的oc 对象 等效于 NSObject  *

13.id 指针调用对象独有的方法要强转吗?
不需要

14.id指针能直接使用点语法吗?
不能 需要强转换成真实类型


/*
id 和 instancetype 的区别

相同点:
都可以做方法的返回值 代表对象

不同点:
id 可以作为参数 而 instancetype不可以

id 是万能指针 可以指向任意对象 instancetupe 不可以它只指向当前类型的对象


*/
15.什么叫构造方法?
是一个对象在初始化时候执行的方法

init就是构造方法

16.构造方法的作用是什么?
初始化对象的值

17.一个对象可以不调用构造方法吗?
不可以

18.new方法做了什么事情?
new方法调用了两个方法:
1.调用+alloc:去给对象分配一块内存空间
2.调用-init:初始化这个对象

19.为什么要有构造方法?能给我们带来什么好处?

构造方法可以让我们得到自己想要的初始化对像值

20.重写构造方法里必须有一步的操作是什么?
[self =[super init ];

21.重写构造方法有什么不足?
封装的不好 重写后 属性值都变成固定值 每初始化一个属性都要重写一个构造方法


22.为什么要自定义构造方法?能给我们带来什么好处?
自定义构造方法可以一次性初始化很多属性 并得到自己想要的初始化对象值 不是固定值

23.自定义构造方法必须做什么事情?
self= [super init属性名:(类型)变量名]

24.子类定义构造时为什么要用父类的构造?有什么好处?
可以省略重复的属性初始化 减少代码量

25.子类用父类的构造时,调用了NSObject 中的 init吗?

调用了












2 个回复

倒序浏览
顶一下,支持!!!!
回复 使用道具 举报
顶一下,支持!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马