数据类型 #
数据结构 #
程序控制 #
switch #
select #
函数调用 #
面向对象 #
条件编译 #
#if defined(A)
#elif
#ifndef
#else
#endif
成员变量名命名规范:_开头
局部变量不用,易于区分
类方法+开头(不用创建对象)
[类名 类方法]
对象方法-开头
[对象名 方法名]
self指向当前对象的指针
不允许子类和父类中拥有相同的成员变量
继承
@interface Car:Animal继承自Animal类
Super 调用父类的方法
点语法,.方法调用
P.age=10;等效
[p setAge:10]
Int a = p.age;
[p getAge:10]
Object-c
BOOL 布尔类型相比c语言新添加
声明用到的#import
类的声明@interface Car :NSObject让这个类具备创建对象的能力
@public使成员变量访问
@end
类的实现@implementation
@end
类中的方法[p run]
oc中函数和方法很不一样,本质区别在哪?
oc方法中任何数据类型都要小括号括住
Car new创建一个新对象并返回一个地址
在方法声明中参数
-(void)sumwith:(int)num1 with:(int)num2 and:(int)num3;
这个方法就叫sumwith:with:and:
调用时[Car sumwith:10 with:20 and:20]
匿名对象:同java
成员变量访问权限
@public任何地方访问
@private只能在当前方法中访问
@protect能在当前类和子类的对象中访问
@package 处在同一个框架中就能访问
@implementation中新定义的成员变量直接就是私有的。
@autoreleasepool关于内存管理
@property自动生成某个成员变量,set和get方法的声明
@property int age自动生成一个_age的变量
@synthesize 自动生成property声明的实现
@synthesize age=_age
Id == NSObject * 万能的指针
id中包含* id d = [person new]
分类category
一个类由多个人来写(奇葩)分类分模块
在不改变类的基础上,只可以为类增加新的方法,不能增加成员变量,但是可以访问
分类中有类的方法时。分类中的方法优先级最高,最后去父类中找 ,最后参与编译的分类优先调用
+方法名 类方法 不用创建实例就可以调用
+load
+initialize方法