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,如需转载请自行联系原作者

相关文章
|
10月前
|
人工智能 算法 安全
AR眼镜在工业AI大模型识别的使用流程​
AR眼镜融合AI大模型,实现工业场景智能识别与预警,提升制造质量与安全。通过多模态模型适配、开源模型选型、端云协同部署及定向训练,打造高精度工业AI识别系统,助力制造业智能化升级。
|
存储 SQL 人工智能
CCCF专栏 | 加密数据库技术:前沿与展望
本文将从数据安全防护的重大战略需求出发,聚焦数据安全搜索、加密数据库技术等前沿领域,深入探讨加密数据库的发展现状,揭示其设计过程中存在的安全性和性能方面的挑战,并提出未来关于加密数据库建设的一些愿景。
CCCF专栏 | 加密数据库技术:前沿与展望
|
1月前
|
JSON Java fastjson
SpringBoot对接黄金白银期货数据API
该API提供黄金、白银等期货实时行情与K线数据,支持JSON格式。需传入API Key认证,通过/market获取产品ID(PID),再调用/queryFutures或/kline接口获取详情或指定周期K线(如PT1M、P1D)。附OkHttp Java示例及关键字段说明。
|
1月前
|
JSON 文字识别 API
图像内容理解-图像智能分析-图片内容理解API接口介绍
图像内容理解服务基于视觉大模型,支持人、物、行为、场景、文字等多维度识别,可生成一句话描述、分类标签及OCR文字信息。提供“提交请求”和“获取结果”两个API接口,适用于看图问答、视觉推理等场景。
346 13
|
7月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
656 0
|
10月前
|
JSON 缓存 API
淘宝平台关键字搜索接口接入指南(含代码示例及商品标题解析)
淘宝开放平台(TOP)提供taobao.tbk.dg.material.optional接口,支持通过关键词搜索商品并获取标题、价格等信息。本文介绍其接入方法与数据解析方式。
|
5月前
|
机器学习/深度学习 存储 传感器
面向课堂与自习场景的智能坐姿识别系统——从行为感知到可视化部署的完整工程【YOLOv8】
本系统基于YOLOv8实现课堂与自习场景下的智能坐姿识别,支持标准坐姿与驼背等不良姿态的实时检测。结合PyQt5开发图形界面,提供图片、视频、摄像头多模式输入,具备高精度、低延迟、易部署等特点,适用于智慧校园、健康办公等场景,助力行为规范与健康管理。
375 5
面向课堂与自习场景的智能坐姿识别系统——从行为感知到可视化部署的完整工程【YOLOv8】
|
6月前
|
存储 弹性计算 分布式计算
阿里云渠道商:支持阿里云 ECS 的操作系统有哪些?
阿里云ECS支持主流操作系统,包括CentOS、Ubuntu、Windows Server等,兼具弹性扩展、混合存储与安全保障,适用于企业应用、网站托管及大数据分析,助力高效上云。
|
7月前
|
Kubernetes 调度 微服务
无需接入执行器,0代码改造实现微服务任务调度
本文提出了一种基于云原生的任务调度新方案,不需要依赖SDK,不依赖语言,实现定时调度和分布式跑批
360 1
|
8月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
786 9