Objective-C

数据类型

数据结构

程序控制

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方法