一、@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的用法)相关推荐

  1. 黑马程序员--Objective-C之--@property和@synthesize关键字

    ------IOS培训期待与您交流! ------- property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明.@synthe ...

  2. Objective-C中的@property和@synthesize用法

    @代表"Objective-C"的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用. 功能:让编 ...

  3. Objective-C @property和@synthesize

    Objective-C中的特性@property和@synthesize 1. "@property"功能是声明当前属性为编译器自动生成set/get 方法 2. "@s ...

  4. @property与@synthesize的差别

    上一篇文章我有讲到self.与_的差别,往往和这个问题相伴随的是我困惑的问题是"@property与@synthesize的差别" @property的使用方法 @interfac ...

  5. IOS约束三个按钮等宽等高,均分整个view,

    IOS约束三个按钮等宽等高,均分整个view, 转发评论和赞这三个按钮如何平均等分. 第1步: 设置 转发按钮 距离 左0 上 1. 第2步: 设置 赞按钮 距离右边0, 第3步: 设置 中间按钮距离 ...

  6. Objective-C Property 和 Synthesize

    为什么80%的码农都做不了架构师?>>>    Objective-C中的@property.@synthesize及点语法都是与两个函数有关的,一是setter函数,另一个是get ...

  7. 简直没法玩!iOS 13三指手势影响多款游戏操作,腾讯建议玩家谨慎更新

    苹果iOS 13正式版推送后,不少用户都第一时间升级了,但是iOS 13却让不少游戏用户感到苦恼,因为其三指操作竟然与<和平精英>等手游产生了冲突. 苹果在iOS 13加入了三指按住手势以 ...

  8. Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型

    点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...

  9. 精品手游小精灵大作战源码 安卓+IOS+H5三端Cocos Creator 客户端 JAVA服务端

    小精灵大作战 数据库说明 数据库使用MySQL,推荐管理软件Navicat For MySQL. 创建数据库命名为pet_battle,字符集选用utf8 -- UTF-8 Unicode,排序规则选 ...

最新文章

  1. The Innovation | Volume 2 Issue 4 正式出版
  2. 关于嵌入式可执行程序,你了解多少?
  3. 【三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】
  4. 国内稳定的暗黑2服务器,国内暗黑2战网的基本概念介绍
  5. 如何将FLV视频转成MP3格式?
  6. 个人信息安全现状及保护方法
  7. 什么是抓包 为什么要抓包
  8. IWDG和WWDG分析
  9. #Paper Reading# Implicit Neural Representations with Periodic Activation Functions
  10. 内网信息收集——工作组/域信息收集
  11. Unity3D灯光详解
  12. 计算机网络知识整理-计算机网络概述(计算机网络入门参考指南)
  13. BULK INSERT如何将大量数据高效地导入SQL Server
  14. android无障碍功能开发,威尼斯游戏-官网首页
  15. PNG文件编码解析之PNG文件格式中的所有数据块以及标识
  16. 离散数学复习重点(1)
  17. 开发油猴脚本:给任意网页的选中文字涂色
  18. 盛唐硬币的另一面:山水田园诗
  19. 老男孩python培训班
  20. 处方外流又迎利好新政,医号馆共享电子处方系统助力智慧服务!

热门文章

  1. 2015/12/28 十六进制转八进制 八进制转十六进制 作业
  2. 【原】display:inline-block下的IE元素
  3. [导入]MsAjax Lib- Boolean.parse 函数
  4. [C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情
  5. 二叉树的建立和遍历的各种问题
  6. Elasticsearch中如何进行排序(中文+父子文档+嵌套文档)
  7. 生成彩条的MATLAB代码
  8. Java并发编程 LockSupport源码分析
  9. java类Timer和TimerTask的使用
  10. 计算机网络-IP地址的分类