主函数详解
int main(int argc, const char * argv[]) {
return 0;
}
-
argc
参数个数 -
argv
指针类型的数组,数组长度就是第一个参数
类的声明和实现
-
类的声明 以
@interface
开头,以@end
结束 ,中间为类名类名首字母必须为大写
@interface User
@end
声明一个类的目的,是为了告诉系统,这个类中有哪些属性和行为
- 类的属性
类的属性声明在类名和@end
之间的大括号 中
在声明类的属性时,建议在所有的属性名之前加上下划线
_
@interface User
{
char * _name;
int _age;
}
@end
- 类的实现 以
@implementation
开头,以@end
结束 ,中间为类名,这个类名必须跟声明的类名一致
@implementation User
@end
创建对象
如果只是按照上述的的方式对类进行声明和实现,是无法创建对象的,而我们声明一个类的目的,就是为了创建对象,想要让我们声明和实现的类具有创建对象的能力,需要将类的声明进行如下的修改
- 继承
NSObject
@interface User:NSObject
{
char * _name;
int _age;
}
@end
- 在主函数中创建
User
类的对象 想要通过一个类创建一个对象,必须要给类发送一条消息,发送消息的方式为[类名称\对象名称 方法名称]
[User new];
如代码所示,我们要创建一个User
类的对象,只需要给User
类发送一个new
的消息即可
所谓的发送消息,就是调用方法,给
User
发送new
消息,就是调用User
类的new
方法
在声明
User
类是,要继承NSObject
,就是为了让User
类具备创建对象的能力,即让User
类可以调用new
方法
创建对象详解
在为User
调用new
方法创建对象时,系统内部会做出如下的事情
- 为
User
类创建出来的对象分配存储空间 - 初始化
User
类创建出来的对象中的属性 - 返回
User
类创建出来的对象对应的地址
- 使用变量,接收
User
类调用new
方法的返回值
创建对象后,new
方法返回的是对象对应的地址,而保存地址,就只能用指针了
User * user = [User new];
如代码所示,我们通过一个User
类型的指针接收了一个User
类型的对象,即用User
类型的指针保存了User
对象的地址,则可以称User
类型的指针变量user
为User
对象
使用一个指针保存了一个对象的地址,就称这个指针为某个类型的对象
-
OC中,
User
类其实是一个结构体,那么user
这个指针就是指向了一个结构体 -
让类的属性公开访问
@interface User : NSObject
{
@public
char * _name;
int _age;
}
@end
- 使用对象访问属性
既然类是一个结构体,那么我们就可以用指向结构体的指针来操作对象中的属性
//指针指向的方式
user->_age = 10;
user->_name = "zhangsan";
//结构体变量的方式
(*user)._age=10;
(*user)._name = "zhagnsan";
- 输出
//C语言方式
printf("age=%d,name=%s\n",user->_age,user->_name);
//OC方式
NSLog(@"age=%d,name=%s",user->_age,user->_name);