IOS第三天(@property与@synthesize的用法)
一、@property与@synthesize基本规范用法
1.@property
当编译器遇到@property时,会自动展开成getter和setter的声明
#import <Foundation/Foundation.h>@interface Student : NSObject {int _age;int _no;float _height; }// 当编译器遇到@property时,会自动展开成getter和setter的声明 @property int age; //- (void)setAge:(int)newAge; //- (int)age; @property int no; //- (void)setNo:(int)newNo; //- (int)no; @property float height; //- (void)setHeight:(float)newHeight; //- (float)height;- (void)test; @end
2.@synthesize
@synthesize会自动生成getter和setter的实现
#import "Student.h"@implementation Student// @synthesize age, height, no;// @synthesize会自动生成getter和setter的实现// @synthesize默认会去访问跟age同名的变量 // 如果找不到同名的变量,会自动生成一个私有的同名变量age // @synthesize age;// age = _age代表getter和setter会去访问_age这个成员变量 @synthesize age = _age; //- (void)setAge:(int)newAge { // _age = newAge; //} // //- (int)age { // return _age; //}@synthesize height = _height; //- (void)setHeight:(float)newHeight { // _height = newHeight; //} // //- (float)height { // return _height; //}@synthesize no = _no; //- (void)setNo:(int)newNo { // _no = newNo; //} // //- (int)no { // return _no; //}- (void)test {_age = 10;_height = 10.0f;_no = 10;} @end
二、@property与@synthesize进阶用法
Person.h
#import <Foundation/Foundation.h>@interface Person : NSObject {int _ID;float _weight; }@property int ID;@property float weight;@end
Person.m
#import "Person.h"@implementation Person@synthesize ID = _ID; @synthesize weight = _weight;//- (void)setWeight:(float)weight { // _weight = weight * 1000; //}//- (float)weight { // return _weight * 1000; //} @end
三、@property与@synthesize终极用法
Teacher.h
#import <Foundation/Foundation.h>@interface Teacher : NSObject@property int age; @end
Teacher.m
#import "Teacher.h"@implementation Teacher// 在xcode4.5的环境下,可以省略@synthesize,并且默认会去访问_age这个成员变量 // 如果找不到_age这个成员变量,会自动生成一个叫做_age的私有成员变量-(void)test {_age = 10; } @end
四、测试:
main.m
#import <Foundation/Foundation.h> #import "Student.h"#import "Teacher.h"int main(int argc, const char * argv[]) {@autoreleasepool {Teacher *tea = [[Teacher alloc] init]; //用Teacher类创建对象 tea.age = 10; //调用setAge方法,将10赋值给_age NSLog(@"age is %i", tea.age); //打印tea对象里的_age [tea release]; //创建对象后的内存回收机制 }return 0; }
转载于:https://www.cnblogs.com/zhmnda/p/4855925.html
IOS第三天(@property与@synthesize的用法)相关推荐
- 黑马程序员--Objective-C之--@property和@synthesize关键字
------IOS培训期待与您交流! ------- property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明.@synthe ...
- Objective-C中的@property和@synthesize用法
@代表"Objective-C"的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用. 功能:让编 ...
- Objective-C @property和@synthesize
Objective-C中的特性@property和@synthesize 1. "@property"功能是声明当前属性为编译器自动生成set/get 方法 2. "@s ...
- @property与@synthesize的差别
上一篇文章我有讲到self.与_的差别,往往和这个问题相伴随的是我困惑的问题是"@property与@synthesize的差别" @property的使用方法 @interfac ...
- IOS约束三个按钮等宽等高,均分整个view,
IOS约束三个按钮等宽等高,均分整个view, 转发评论和赞这三个按钮如何平均等分. 第1步: 设置 转发按钮 距离 左0 上 1. 第2步: 设置 赞按钮 距离右边0, 第3步: 设置 中间按钮距离 ...
- Objective-C Property 和 Synthesize
为什么80%的码农都做不了架构师?>>> Objective-C中的@property.@synthesize及点语法都是与两个函数有关的,一是setter函数,另一个是get ...
- 简直没法玩!iOS 13三指手势影响多款游戏操作,腾讯建议玩家谨慎更新
苹果iOS 13正式版推送后,不少用户都第一时间升级了,但是iOS 13却让不少游戏用户感到苦恼,因为其三指操作竟然与<和平精英>等手游产生了冲突. 苹果在iOS 13加入了三指按住手势以 ...
- Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
- 精品手游小精灵大作战源码 安卓+IOS+H5三端Cocos Creator 客户端 JAVA服务端
小精灵大作战 数据库说明 数据库使用MySQL,推荐管理软件Navicat For MySQL. 创建数据库命名为pet_battle,字符集选用utf8 -- UTF-8 Unicode,排序规则选 ...
最新文章
- The Innovation | Volume 2 Issue 4 正式出版
- 关于嵌入式可执行程序,你了解多少?
- 【三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】
- 国内稳定的暗黑2服务器,国内暗黑2战网的基本概念介绍
- 如何将FLV视频转成MP3格式?
- 个人信息安全现状及保护方法
- 什么是抓包 为什么要抓包
- IWDG和WWDG分析
- #Paper Reading# Implicit Neural Representations with Periodic Activation Functions
- 内网信息收集——工作组/域信息收集
- Unity3D灯光详解
- 计算机网络知识整理-计算机网络概述(计算机网络入门参考指南)
- BULK INSERT如何将大量数据高效地导入SQL Server
- android无障碍功能开发,威尼斯游戏-官网首页
- PNG文件编码解析之PNG文件格式中的所有数据块以及标识
- 离散数学复习重点(1)
- 开发油猴脚本:给任意网页的选中文字涂色
- 盛唐硬币的另一面:山水田园诗
- 老男孩python培训班
- 处方外流又迎利好新政,医号馆共享电子处方系统助力智慧服务!
热门文章
- 2015/12/28 十六进制转八进制 八进制转十六进制 作业
- 【原】display:inline-block下的IE元素
- [导入]MsAjax Lib- Boolean.parse 函数
- [C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情
- 二叉树的建立和遍历的各种问题
- Elasticsearch中如何进行排序(中文+父子文档+嵌套文档)
- 生成彩条的MATLAB代码
- Java并发编程 LockSupport源码分析
- java类Timer和TimerTask的使用
- 计算机网络-IP地址的分类