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方法中使用本属性的点语法.
网友评论