欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

-对象方法 实例方法调用

+类方法 通过类名调用

不支持方法重载

OC类相关

三、类的实例化

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方法不覆盖

OC类相关九、消息传递过程(选择调用的方法过程)OC类相关

本文地址:https://blog.csdn.net/qq_41855962/article/details/107487963