美文网首页
oc 基础 set 方法和 get 方法

oc 基础 set 方法和 get 方法

作者: xq9527 | 来源:发表于2021-03-18 10:51 被阅读0次

属性声明和set 方法 get方法声明

//
//  Person.h
//  SeterAndGeter
//
//  Created by xuqing on 2021/3/18.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject{
    NSString * _name;
    NSUInteger _age;
    NSString* _sex;
}
- (void)setName:(NSString *)name;
- (void)setAge:(NSUInteger)age;
- (void)setSex:(NSString *)sex;
- (NSString*)name;
- (NSUInteger)age;
- (NSString*)sex;
@end
NS_ASSUME_NONNULL_END

set 方法和get方法实现

//
//  Person.m
//  SeterAndGeter
//
//  Created by xuqing on 2021/3/18.
//
#import "Person.h"
@implementation Person
- (void)setName:(NSString *)name{
    _name=name;
}
- (void)setAge:(NSUInteger)age{
    _age=age;
}
- (void)setSex:(NSString *)sex{
    _sex=sex;
}
- (NSString *)name{
    return  _name;
}
- (NSUInteger)age{
    return  _age;
}
- (NSString *)sex{
   
    return _sex;
}
- (NSString *)description{
    return [NSString stringWithFormat:@"name= %@ ,age =%zd, sex =%@", _name,_age,_sex];
}
@end

更改工程处理mrc环境下

image.png
//
//  Person.m
//  SeterAndGeter
//
//  Created by xuqing on 2021/3/18.
//

#import "Person.h"

@implementation Person
- (void)dealloc
{
    [_name release];
    [_sex release];
    [super dealloc];
  
}
- (void)setName:(NSString *)name{
    if(name!=_name){
        [_name release];
        _name= [name retain];
    }
    //_name=name;
}


- (void)setAge:(NSUInteger)age{
    _age=age;
    
}
- (void)setSex:(NSString *)sex{
    if(sex!=_sex){
        [_sex release];
        _sex= [sex retain];
    }
    //_sex=sex;
    
}


- (NSString *)name{
    return  _name;
}

- (NSUInteger)age{
    return  _age;
}
- (NSString *)sex{
    return _sex;
}
- (NSString *)description{
    return [NSString stringWithFormat:@"name= %@ ,age =%zd, sex =%@", _name,_age,_sex];
}

@end

在mrc的环境下我们要最对于NSString 引用类型数据 进行有严格的么内存管理 我们需要在 dealloc 方法中 release 掉我们变量占用的内存 然后我们在 set 方法中要进行变量赋值判断 当我们传入变量没有发生改变我们不执行 变量赋值 和返回

- (void)setName:(NSString *)name{
    if(name!=_name){
        [_name release];
        _name= [name retain];
    }
    //_name=name;
}

然后get 方法跟我们在arc 环境下面是一样的 我们就不展开讲了 现在苹果也很好的支持了 arc 在arc 环境下我们就不用考虑复杂的内存引用管理了

外部调用 并打印效果

//
//  main.m
//  SeterAndGeter
//
//  Created by xuqing on 2021/3/18.
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person * person= [[Person alloc]init];
        [person setName:@"张冰"];
        [person  setAge:10];
        [person setSex:@"女"];
        NSLog(@"%@", [person name]);
        NSLog(@"%@",[person sex]);
        NSLog(@"%zd",[person age]);
        NSLog(@"%@",person);
    }
    return 0;
}

日志观察


image.png

相关文章

  • OC 基础set方法和get方法

    我们在OC中定义一个类的时候,它的成员变量默认情况下是@protected的。这是因为我们的成员变量一般不允许直接...

  • oc 基础 set 方法和 get 方法

    属性声明和set 方法 get方法声明 set 方法和get方法实现 更改工程处理mrc环境下 在mrc的环境下我...

  • OC get set 方法理解

    OC get set 方法理解 get set方法不能同时重写 最近在了解oc的属性,oc的属性组成是由成员变量+...

  • set get方法(字典转模型)

    swift中的set和get方法与OC中的使用方法不太一样。 swift中的set,get方法是接在属性的声明后面...

  • iOS 同时重写get、set方法报错

    iOS 同时重写get、set方法报错,可以看一下这篇文章 OC 同时重写get、set方法报错

  • set、get和willSet、didSet

    OC中我们常重写set和get方法来改变UI,swift中重写set和get方法是下面这种。先定义一个变量,当调用...

  • iOS 重写Swift中的set和get方法

    OC中我们常重写set和get方法来改变UI,Swift中重写set和get方法是下面这种。先定义一个变量,当调用...

  • set、get和willSet、didSet

    OC中我们常重写set和get方法来改变UI,swift中重写set和get方法是下面这种。先定义一个变量,当调用...

  • 重写set或get方法

    【学习笔记】【OC语言】set方法和get方法 1.set方法作用:用来设置成员变量,可以在方法里面过滤掉一些不合...

  • Swift2.0 属性的set get willSet will

    标签(空格分隔): IOS-Swift [toc] 简要说明 set和get 在OC中属性是由set和get方法来...

网友评论

      本文标题:oc 基础 set 方法和 get 方法

      本文链接:https://www.haomeiwen.com/subject/xbsucltx.html