oc-25- @property @synthesize

简介:
复制代码
s.h

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    @public
    NSString *_name;
    int _age;
    int _height;
}

// @property能够自动生成set和get方法的 声明
// @property 成员变量类型 成员变量名称(去掉下划线);
//- (void)setName:(NSString *)name;
//- (NSString *)name;
@property NSString *name;
@end


s.m

/**
 问题:想要给自己不带下划线的成员变量进行赋值,怎么办?>

 需要给@synthesize指定,告诉该赋值给谁.
 @synthesize name = _name;
 它就知道,赋值_name;
 */


#import "Student.h"

@implementation Student
@synthesize name;
//生成了getset方法的实现
//- (void)setName:(NSString *)name
//{
//    name = name;
//    NSLog(@"%p",name);
//}
//- (NSString *)name
//{
//
// return name;
//}
@end


main.m

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Student *s = [Student new];
        s.name = @"亚索";
        // 这步能够调用,证明@property生成了set和get方法的声明.
        [s setName:@"亚索"];
        // 证明@synthesize生成了set和get方法的实现.
        NSLog(@"%p",s->name);
        NSLog(@"-----");
    }
    return 0;
}
复制代码

 

@property增强使用

  • Xcode4.4版本以后支持的
  • 只使用 @property 进行声明,类自动帮你实现。
  • Xcode4.4以后property做了增强

    • 帮助我们自动生成get/set方法的声明
    • 帮助我们自动生成get/set方法的实现
复制代码
s.h
/**
  @property的加强用法:
 1.生成set和get方法的声明
 2.生成set和get方法的实现
 3.生成带下划线的成员变量.
 
 注意事项:
 1. 当用户手动重写了set方法时,@property会生成get方法和带下划线的成员变量
 2. 当用户手动重写了set和get方法时.@property不会生成待下划线的成员变量.
 3. 当用户手动重写了get方法时,@property会生成set方法和带下划线的成员变量.
 
 */

#import <Foundation/Foundation.h>
#import "Person.h"

@interface Student : Person

@property NSString *name;//生成的变量名是_name,

@property int age;

@property int height;

@property int weight;

@end


s.m

#import "Student.h"

@implementation Student

//@synthesize age = _age,height = _height,weight = _weight,name = _name;

//手动重写get方法
- (NSString *)name
{
    return _name;
}


- (instancetype)init
{
    if (self = [super init]) {
        NSLog(@"s---%@",self);
        NSLog(@"s---%@",super.class);
    }
    return self;
}
@end
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5311330.html,如需转载请自行联系原作者

相关文章
|
存储 安全 前端开发
springboot057洗衣店订单管理系统
springboot057洗衣店订单管理系统
|
10月前
|
人工智能 算法 安全
AR眼镜在工业AI大模型识别的使用流程​
AR眼镜融合AI大模型,实现工业场景智能识别与预警,提升制造质量与安全。通过多模态模型适配、开源模型选型、端云协同部署及定向训练,打造高精度工业AI识别系统,助力制造业智能化升级。
|
存储 SQL 人工智能
CCCF专栏 | 加密数据库技术:前沿与展望
本文将从数据安全防护的重大战略需求出发,聚焦数据安全搜索、加密数据库技术等前沿领域,深入探讨加密数据库的发展现状,揭示其设计过程中存在的安全性和性能方面的挑战,并提出未来关于加密数据库建设的一些愿景。
CCCF专栏 | 加密数据库技术:前沿与展望
|
10月前
|
JSON 缓存 API
淘宝平台关键字搜索接口接入指南(含代码示例及商品标题解析)
淘宝开放平台(TOP)提供taobao.tbk.dg.material.optional接口,支持通过关键词搜索商品并获取标题、价格等信息。本文介绍其接入方法与数据解析方式。
|
算法 安全 量子技术
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
1234 0
|
SQL 关系型数据库 MySQL
SQL命令行退出操作指南:轻松掌握不同数据库环境下的退出技巧
在数据库管理与开发过程中,经常需要通过SQL命令行工具(如MySQL的mysql客户端、PostgreSQL的psql、SQL Server的sqlcmd等)与数据库进行交互
1551 59
|
监控 关系型数据库 MySQL
性能调优:避免SELECT *,仅查询需要的字段减少数据传输
在数据库性能调优中,`SELECT *`虽简便但不推荐。它会增加数据传输开销、降低查询优化器效率、影响代码可维护性,并可能成为性能瓶颈。明确指定查询字段能显著减少数据传输量、提升响应速度、优化执行计划并提高代码质量。通过实际案例对比,优化后的查询可减少60%的数据传输量,缩短40%的响应时间。建议养成明确字段查询的习惯,避免性能问题。
670 54
|
供应链 NoSQL Java
用Redisson写一个库存扣减的方法
通过本文的介绍,我们详细讲解了如何使用Redisson实现一个简单的库存扣减功能。通过使用分布式锁,可以确保库存扣减操作的原子性和高效性。希望本文能帮助您更好地理解和应用Redisson,构建高效、可靠的库存管理系统。
548 15
|
机器学习/深度学习 存储 测试技术
RT-DETR改进策略【模型轻量化】| EMO:ICCV 2023,结构简洁的轻量化自注意力模型
RT-DETR改进策略【模型轻量化】| EMO:ICCV 2023,结构简洁的轻量化自注意力模型
589 0
RT-DETR改进策略【模型轻量化】| EMO:ICCV 2023,结构简洁的轻量化自注意力模型
|
JSON 自然语言处理 前端开发
React国际化中英文切换实现
React国际化中英文切换实现

热门文章

最新文章