OC类相关
程序员文章站
2022-03-12 19:44:23
一、类的声明NSObject 完成 内存分配 内存回收 对象初始化 对象描述 等等操作。@interface Student:NSObject{//声明实例变量 @protected //保护的 NSString *name; @private NSString *sid; @public unsigned int age; }-(void) setName:(NSString*)aName;-(NSString*)name;//类...
一、类的声明
NSObject 完成 内存分配 内存回收 对象初始化 对象描述 等等操作。
@interface Student:NSObject{//声明实例变量
@protected //保护的
NSString *name;
@private
NSString *sid;
@public
unsigned int age;
}
-(void) setName:(NSString*)aName;
-(NSString*)name;
//类方法
+(void)print;
二、类的实现
@implementation Student
-(void) setName:(NSString *)aName{
name = aName;
}
-(NSString *) name{
return name;
}
+(void)print{
NSlog(@"test");
}
@end
-对象方法 实例方法调用
+类方法 通过类名调用
不支持方法重载
三、类的实例化
id 对象指针 nil空对象
id test = nil;
Student *test = nil;
//student是一个指针
Student *student = [[Student alloc]init];
[Student print];
四、调用方法原理
消息传递
[消息接受者 消息]
根据消息查找相对于的方法
五、类的初始化方法
可以写多个初始化方法 以init开头
最多参数的为指定初始化方法
-(id) init
{
if(self = [super init])
{
width = 20;
high = 16;
}
return self;
}
六、存储器方法 设置好就可以通过点语法调用
//相对于getname 但是没有get
-(NSString*)name;
-(int)age;
//set方法
-(void)setAge:(int)aAge;
-(NSString*)setName:(NSString*)aName;
七、属性声明机制 (都用这种)自动生成对应的getter和setter方法
//属性声明 attributes指示器
@property(attributes)数据类型 实例变量;
//存储器方法实现
@synthesize 实例变量1,实例变量2...实例变量n;
attributes
线程相关 : 原子性 atomic(默认) 非原子性 nonatomic
读写属性 : readonly readwrite(默认)
引用计数 : retain
assign
copy strong
可以不要实例变量 只声明属性就可以了也就是{}里面东西可以不要
八、类的继承
注意点:
(1)只支持单继承
(2)可以覆盖父类方法
一般覆盖dealloc、init方法其他的alloc release方法不覆盖
九、消息传递过程(选择调用的方法过程)
本文地址:https://blog.csdn.net/qq_41855962/article/details/107487963