1.#import、#include、@class的区别
#import:防止重复引用
#include:多次重复编译
@class声明一个类,告诉编译器这个他后面的名字是一个类,关于这个类的定义实现我们暂时不用知道
2. <>、“”的区别
<>:导入的是系统的库
" ":导入的时自定义的一些文件
3.@:
1、作为OC关键字的起始
2、使用%@可自动调用description方法对该对象进行描述,即打印对象信息
4.类和对象
类(class):对一类事物抽象的描述(抽象)
对象(object):从一类事物中具体化出来的一个实例(具体)
5.成员变量的作用范围:
@public:在任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法
@protected:可以在当前类及其子类对象方法中直接访问(系统默认下是用它来修饰的)
@package:在同一个包下就可以直接访问,比如说在同一个框架
注意:
无论父类是在@interface还是@implementation声明的成员变量子类都能拥有;但是子类能不能直接通过变量名来访问父类中定义的成员变量是需要看父类中定义的成员变量是由什么修饰符来修饰的。
默认:在@implementation中成员变量的修饰符为@private,
在@interface中成员变量的修饰符@protected
6.创建一个对象
//开辟空间 id = NSObject *
Person *person = [Person alloc];
// 初始化 person = [person init];
(1)导入头文件
(2)alloc
(3)init:父类的init,重写,自定义初始化
父类的init:所有的变量初始化为0或nil
init重写:在.m文件中写
//init重写
- (instancetype)init
{
self = [super init];
if (self) {
_name = @"coco";
_age = 22;
}
return self;
}
自定义初始化方法:在.m文件中写
//自定义初始化
- (instancetype)initWithName:(NSString *)name age:(NSInteger)age
{
self = [super init];
if (self) {
_name = name;
_age = age;
}
return self;
}