无题2

2018-12-22  本文已影响0人  helloW_Coder

A

    1.代表任意的对象类型:

instancetype->只能作为返回值

id->均可

方法重写:本来有的方法 重新定义方法的实现过程

写init方法的时候 系统提示-->说明这个方法本来就有-->继承父类的方法

如果重写了父类的方法-->对象调用方法时会执行复写后的方法

如果复写方法时,想保证该方法原来的功能,可以在方法中调用父类super的该方法

main.m                    Person类                                        NSObject

创建Person类 

调用init方法  --->  (1) init方法(复写)[super init]

                              (2)若没有复写 -------------------->   init

                    person <----return  <-------------产生  id

复写与否都要父类方法的功能创建对象

-(id)initWithIsBoy:(Bool)isBoy{

//条件判断保证对象已经创建出来再使用  防止没人有名的情况

if( self = [super init] ){

_isBoy = isBoy;

}

return self;

}

B

property产物:1.下划线属性 2.set方法 3. get方法

@interface    @end  ---> .h文件--->  类的声明

@implement   @end ---->.m 文件--->  类的实现

@property(nonatomic,assign\copy\strong)属性类型 属性名(不需要自定义下划线)

1.nonatomic:多线程下,不存在线程保护(速度快) 推荐使用

         atomic:多线程下,存在线程保护(速度慢) 

2.assign:基本数据类型

  copy:字符串

strong(retain) : 除了字符串以外的其他对象类型  最好用strong

3.readwrite:可读写(默认)  set get

   readonly:只读  get

4.属性名称不需要加下划线(自带)

C

点语法

stu.age = 10;  展开为 [stu  setAge:10];

int age = stu.age;  展开为 int age = [stu age];

当点语法使用在"="赋值符号左侧的时候,点语法会被展开为set方法的调用,

其他情况(等号右侧,直接使用) 为点语法展开为get方法的调用.

2.点语法的 本质 是 方法的调用,而不是访问成员变量,即转换成相对应的set和get方法的调用,如果没有set和get方法,则不能使用点语法.

3.不要在set和get方法中使用本属性的点语法.

上一篇 下一篇

猜你喜欢

热点阅读