黑龙江省关于城市建设政策网站,宁阳移动网站制作,asp.net.做简单的网站,重庆网站推广的网站1、类的定义与实现1.1说明所有的类都是继承NSObject。类的接口与实现是分开的#xff0c;一般类的定义是放在.h文件【包含类的名称、成员变量、方法、属性、继承关系 、遵从的协议】#xff1b;实现部分是放在.m文件中【包含每个属性和方法的具体实现以及协议的方法实现】语法… 1、类的定义与实现1.1说明所有的类都是继承NSObject。类的接口与实现是分开的一般类的定义是放在.h文件【包含类的名称、成员变量、方法、属性、继承关系 、遵从的协议】实现部分是放在.m文件中【包含每个属性和方法的具体实现以及协议的方法实现】语法【类的定义以interface开头以end结束类的实现以implementation关键字开头以end结束】Person.hinterface Person:NSObject{//类的成员变量区【类的成员变量声明】}//类的方法与属性区【类的方法与属性的定义】endPerson.m#import “Person.h”implementation Person{}end1.2实例化alloc实例一个新的对象需要调用类的alloc静态方法。alloc方法一旦调用就表明了向内存申请了一个空间用来保存该类的信息。具体流程是alloc会查看所有该类及所有基类统计出这些类一共定义了哪些成员变量总共需要多大的内存空间用来保存这些信息然后向操作系统发出请求申请这些空间如果成功alloc方法会将所有的成员亦是置为0除了一个特殊的指向其类元对象的成员之外然后返回这块申请下来的空间的首地址流程图2、成员变量与方法2.1变量变量分为成员变量和类的静态变量。成员变量可访问性protected、private、public关键字可见性描述protected当前类及子类的实例方法可见默认值类里声明的成员变量的可访问级别默认为protected。 private只对当前类的实例方法可见私有访问级别publice成员变量对外可见变量的声明interface Person:NSObject{privateNSString *_name;int _age;}静态变量使用static关键字表示定义在类的实例部分中所有实例方法之外。类的静态变量对于实例方法和类方法都是可见的。implementation Personstatic int NumberPerson0;end2.2方法方法的声明语法|-(返回值类型)方法名;|-(返回值类型)参数1说明:(参数1类型)参数1名称 参数2说明: (参数2类型)参数2名称;加号表示该方法是一个类的方法类的静态方法它不属于类的任何实例只属于该类。【类似于Java中的static方法】 调用格式为 [类 方法名] 例: [Person setMaxAge:20];-减号表示该方法的实例方法属于实例。调用时必须先将实例化然后再调用。调用格式为[类的实例 方法名] 例:Person *xiaoMing[[Person alloc] init];//实例化[xiaoMing setName:”90worker”];注意-(BOOL)likeFood:(NSString *)food;方法名为likeFood: 【注意有个冒号】-(id) initWithcName:(NSString *)name andAge:(int) age;方法名为initWithcName: andAge: 【注意有多个冒号】2.3选择器select每一个Objective C方法都对应一个选择器即SEL类型的对象。Objective C运行时通过方法对应的选择来定位其实现代码。可以通过select指令 传入方法名可以获取该方法的选择器用法 : SEL initMethodSelectselect(initWithName:age:);用途通常用于指定回调方法。2.4属性property语法:property (属性的附加特性) 类型 名称.m文件实现用synthesize关键字。【synthesize 属性名称|synthesize 属性名称成员变量名称】声明property (nonatomic,copy) NSString *name;实现synthesize name;属性的附加特性:关键词描述nonatomic线程安全的编译器默认会生成额外的代码以保证访问属性的线程安全会牺牲一定的性能。readonly属性只可读,synthesize指令只会生成get方法还没有set方法readwrite默认值。可读写geterget方法名setterset方法名当声明一个属性用synthesize指令会生成相应的get方法和set方法但可以通过getter和setter来手动指定get方法和set方法assign、retain、copy调用对过点.来实现调用xiaoMing.name”90worker”;点语法oc2.0以后为什么设计点语法1、为了方便别的程序员转到OC开发来2、为了让程序设计简单化3、隐藏了内存管理细节4、隐藏了多线程、同步、加锁细节2.5class关键字class为前向声明现有两个类的声明Wheel代表着轮子Bike代表着自行车我们知道Bike是需要Wheel的于是有以下的代码Bike.hintefrace Bike:NSObject{Wheel * _frontWheel, *_rearWheel;}end在这里我们用到了Wheel类那么我们到底是用#import还是用class呢我们用一个表格来说明#import和class关键字描述#import将Wheel类的外部接口Wheel.h整个导入这样会产生编译依赖和编译时间的浪费。如果Bike.h中导入了Wheel.h而Bike.h文件又被很多其他的类导入 了那么这些类也会导入了Wheel.h一旦Wheel.h修改了所有导入了Wheel.h的文件都发生了变化需要重新编译。class1、可以有效的解除上面所说的编译依赖。如果Wheel.h修改了对于那些导入了Bike.h的文件并没有发生变化所以也不需要重新编译。使用了class关键字只是在类的定义中前身引用了但在Bike类的内部实现中还是需要导入Wheel.h的因为可能需要使用到Wheel.h中的某些定义方法2、可以解决循环引用2.6self关键字self表示当前引用对象记住以下两句话1、谁在执行该函数 self就表示谁2、super表示该对象的父对象(int)maxAge{//在类方法 静方法 self表示本类【抽象】 对象是具体的、实例的}(id) person{id obj[[self alloc] init]; //用法[[Person alloc] init]; [[[self class ] alloc] init]//selfPersonreturn obj;}//调用 [xxx 方法名] maxAge方法里面的self表示int maxAge[Person maxAge];2.7dealloc函数dealloc【只调用一次】对象从内存中销毁前夕调用的函数在对象完全消失的时候调用 对象的计数器为0的时候会自动调用dealloc 不能人为的去调用此方法。应用这样调用:[xx release] //release计数器1减到0 系统就会自动的调用dealloc-(void)dealloc{//在调用父类之前做一些处理[super dealloc];}2.8 initialize函数(void)initialize NSObject 这个类的第一次实例化的时候调用 第一次调用alloc 或者调用init的时候就会调用 【只调用一次】 类方法在该类第一次实例化的时候调用 并且只调用一次 在这里做一些static变量的初始化操作 转载于:https://blog.51cto.com/jiahui524/1309263