static ,类体内的全局变量声明,声明在所有方法之外,该文件中的 任何方法都可以直接访问,其他文件不能访问
private,只能在本类中使用,默认为projected 可以在本类和子类中使用,public在项目的 任何地方都能使用
ios只能单继承,通过协议的方式实现多继承特点
id声明的类型为动态类型,动态绑定:程序只有在运行时才能确定对象调用的实际方法
多态特性:父类的声明指向子类,重写父类方法,父类的声明变量指向子类对象
-( BOOL)isKindOfClass:( Class)aClass; // 对象是否为aclass或其子类成员
-( BOOL)isMemberOfClass:( Class)aClass; //对象是否为aclass成员
-( BOOL)isSubclassOfClass:( Class)aClass; //对象是否为aclass的子类
-( BOOL)respondsToSelector:( SEL)aSelector ; //对象是否响应指定的方法
ios 中nslog输出格式:
%@ 对象
%d, %i 整数
%u 无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu 无符64位长整数
%Lf 64位双字
实例变量还只是声明内存为空,alloc之后才分配内存创建对象,init后才能使用;
同一个类的每个对象有不同的实例变量的存储空间;
同一个类的每个对象指向不同的内存;
同一个类的不同对象放在栈区,一个对象的不同实力变量放在堆区
局部变量放在栈内存里面,全局变量和初始化数据放在堆里面;
在init方法中,需调用super init方法初始化父类在赋值给本类,为了防止父类在初始化过程中返回的对象不同于原先创建的对象
一个变量都是有两块内存,一个堆内存,一个栈内存,一般都是一个栈内存指向一块堆内存
形参也是局部变量;形参调用后消失内存快
如果两个类互相引用,那么则需要在另外一个类的interface里面 @class,可避免编译错误;