//无参数方法声明 -(返回值)方法名;
//有参数方法声明 -(返回值)方法名1:(参数类型) 参数名;
-(返回值)方法名1:(参数类型) 参数名 and:(参数类型2) 参数名2;
举例: -(void)info:(NSString *name) andAge:(int)age;
注意:冒号是方法名的一部分
//实例变量书写规范 @interface Person : NSObject { //类的属性 int _age; NSString *_name;
}
@end
//-----------------------对象存储细节 1. 当创建一个对象的时候:Person *p1 = [Person new] 做了三件事情: 1.1,申请堆内存空间; 1.2,给实例变量初始化 1.3,返回所申请空间的首地址;
2. 实例变量保存在堆区
3. 对象方法保存在代码区
4. 一个类可以创建多个对象;
//---------------#pragma mark 指令
功能:对代码分组,方便代码查找和导航
使用格式: #pragma mark -
#waring 等待处理的功能,或者是未完成的功能
//-----------------------函数和对象方法的区别 -(void)run; (1)对象方法的实现在@implementation...@end中
对象方法的声明只能写在 @interface...@end中间
(2)对象方法都以-号开头
(3)对象方法只能由对象来调用
(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在 @interface...@end会无法识别,函数的声明可以在main函数内部也可以在main函数外部。
(5)对象方法归对象所有
函数: void run(){ } (1)所有的函数都是平行的 (2)函数不存在隶属关系 (3)使用的时候可以直接调用 (4)不可以访问对象中的成员变量
//------------------常见错误汇总 1)@interface @end和@implementation @end不能嵌套包含
2)只有类的声明没有类的实现 只有@interface没有@implementation时,程序编译能够通过,但是执行报错
3)漏写@end
4)两个类的对象声明顺序(可以把顺序打乱)
5)成员变量没有写在{}里 错误的
6)方法的声明写在了{}里面 错误的
7)在声明时不能对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在
8)方法无法像函数那样的调用
9)成员变量和方法不能用static等关键字修饰,不要和c语言混淆
10)类的实现可以写在main函数后面,在使用之前只要有声明就可以
#warning 列举这些常见错误,是为了告诉大家要往正确的方向去学习去编写代码.把自己编写代码的习惯更正过来
//------------------对象和方法之间的关系 -(返回值)方法名1:(参数类型) 参数名;
//(1),对象作为方法的参数 -(void) displayPerson:(Person *)person{ NSLog("姓名:%@",person->name); }
//(2),对象作为方法的返回值 -(Person *)changePerson:(Person *)person{ person->name = @"唐僧"; return person; }
//关联关系(之后还会着重讲) 人拥有狗这个成员变量 @interface Person : NSObject { @public Dog *_dog; //null 关联关系 Person对象里面拥有了一个Dog对象 }
......
Person *p = [Person new]; //给p一个dog p->_dog = d1; //人拥有d1这只狗
对象作为方法参数的连续传递
/* 练习方法 1----看到题目 写代码 允许写伪代码作为提示 2----看着题目 写伪代码 写完伪代码 可以尝试敲代码 3----copy题目 copy伪代码 尝试去写代码 4----打开现成代码 看懂这个代码 对着敲 至少也得敲2遍 */
//------结构体作为类的实例变量。给结构体赋值的三种方法: typedef struct {
//年 int year; //月 int month; //日 int day;
}MyDate;
//第一种:直接赋值,并强转; stu->_birthday =(MyDate){1983,12,12};//直接赋值,并强转;
//第二种:先定义,然后在赋值 MyDate d1 = {1981,11,11}; //定义结构体变量的同时进行初始化 stu->_birthday = d1;
//第三种方法,逐个赋值 stu->_birthday.year = 2014; stu->_birthday.month = 12; stu->_birthday.day = 11;
|