类的声明
@interface MyClass : NSObject
{
//成员变量声明
int count;
id data;
NSString* name;
}
//方法声明
- (id)initWithString:(NSString*)aName;
- (MyClass*)createMyWithString:(NSString*)aName;
@end
- 类的声明由编译器指令 @interface 开始 @end 结束
- Myclass -类名称
- NSObject -父类名称 NSObject-OC提供的基类
- {}中声明成员变量,{}外声明类的方法
类的实现
在类的接口完成(.h):
- 定义一个类
- 添加类的属性
- 添加类的行为(方法)
@interface Person : NSObject
{
//{}内部添加当前类属性
//字符串
NSString *name;//姓名,NSString同样是一个类
//整型
NSInteger age;//年龄,NSInteger是数值类型
NSString *gender;
}
//{}外部添加当前类行为
//实例行为
//仅声明
- (void)sayHi;
@end
方法声明:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
- -方法类型标志符
- 实例方法(-):由类的实例来执行。在调用实例方法之前必须先创建该类的实例。最常见。
- 类方法(+):可有所在的类直接执行
- (void)返回类型 ,insertObject/atIdex方法签名关键词
- (id)/(NSUInteger)参数类型 , anObject/index参数名
类的实现(.m):
#import "Person.h"
@implementation Person
- (void)sayHi
{
//NSLog将字符串打印在控制台进行输出,类似于printf()
NSLog(@"我的姓名是%@",name);
}
@end
- 类的实现由编译器指令 @implementation 开始 @end 结束
创建实例对象
初始化方法
声明
//初始化方法
//希望通过初始化方法,能够获得一个Person类的实例对象,并且希望该对象具有自己的姓名属性
- (id)initWithName:(NSString *)_name;
实现
- (id)initWithName:(NSString *)_name
{
//1、分配内存,原始初始化 将内存内的变量都变为零
self = [super init];
//2、原始初始化成功之后,需要设置当前对象的姓名为形参
if (self != nil) {
name = _name;
}
//3、返回当前对象
return self;
}
创建对象
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
//1、创建Person类的实例对象
//分配内存
Person *person = [[Person alloc] initWithName:@"ChieLi"];
//2.给person发送实例消息sayHi
[person sayHi];
return 0;
}
- 通过分配并初始化对象来创建类。 为了分配对象,通过发送 alloc 消息给该对象的类,来获得一个“原始”(未初始化)的实例。
修改对象属性
通过添加设置器(setter)与访问器(getter)。
类.m
//设置器 setter
- (void)setName:(NSString *)_name
{
name = _name;
}
//访问器 getter
- (NSString *)getName
{
return name;
}
main.m
//3、打印当前person实例对象的姓名是什么
NSLog(@"person's name is %@",[person getName]);
//4、修改当前实例对象的姓名
[person setName:@"Jack"];