博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC- @property @synthesize
阅读量:6147 次
发布时间:2019-06-21

本文共 1479 字,大约阅读时间需要 4 分钟。

@property

1,在@interface中

2,自动生成setter和getter的声明

#import 
@interface Person : NSObject{ int _age; // int age; int _height; double _weight; NSString *_name; } // @property:可以 自动生成某个成员变量的setter和getter声明 @property int age; //- (void)setAge:(int)age; //- (int)age; @property int height; //- (void)setHeight:(int)height; //- (int)height; - (void)test; @property double weight; @property NSString *name; @end

Person.m

#import "Person.h"@implementation Person // @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量 @synthesize age = _age; @synthesize height = _height; @synthesize weight = _weight, name = _name; @end
#import "Person.h"@implementation Person// @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量@synthesize age = _age;@synthesize height = _height;@synthesize weight = _weight, name = _name;@end

 

@property关键字

        自动生成某个成员变量的setter和getter方法的声明

        相当于 - (void)setAge:(int)age;

            - (int)age;

@synthesize

语法: @synthesize age = _age;

相当于:

    - (void) setAge:(int)age

    {  

       _age = age;

    }

        - (int)age

    {

        return _age;

    }

 如果成员变量_age不存在,就会自动生成一个@private的成员变量_age

 

若:@synthesize age;

  setter和getter实现中会访问成员变量age

  如果成员变量age不存在,就会自动生成一个@private的成员变量age

 

手动实现:

  若手动实现了setter方法,编译器就只会自动生成getter方法

  若手动实现了getter方法,编译器就只会自动生成setter方法

  若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

 

新特性:

  自从Xcode 4.x后, @property就独揽了@synthesize的功能

  默认情况下,setter和getter方法中的实现,会去访问下划线_开头的成员变量

 

转载于:https://www.cnblogs.com/IDRI/p/4953524.html

你可能感兴趣的文章
Rust 1.27支持SIMD
查看>>
如何用度量影响敏捷环境
查看>>
未来的C#之覆写放宽
查看>>
GitHub GraphQL API已正式可用
查看>>
GitHub:我们为什么会弃用jQuery?
查看>>
苹果Q1财报出炉:手机收入下滑15%,服务收入增长19%
查看>>
用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识
查看>>
Pandas时间序列
查看>>
开发者论坛一周精粹(第四十八期) ICP经营许可证办理流程
查看>>
基于Go的websocket消息服务
查看>>
流计算独享模式正式邀测
查看>>
hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
查看>>
Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS 对比
查看>>
无人机协助科研人员探寻珍稀植物,仅需20分钟
查看>>
CPU和内存 程序(线程)关系
查看>>
Maven属性(properties)标签的使用
查看>>
5月7日云栖精选夜读丨如何用阿里云快速构建游戏发行技术体系
查看>>
工业强基 - 头条新闻
查看>>
巨头间数据之争频发的背后,是用户对于个人数据话语权的缺失
查看>>
结合人体部位,将虚拟现实做到更完美
查看>>