ios-set和get方法
来源:互联网 发布:公司注册淘宝店铺流程 编辑:程序博客网 时间:2024/06/06 09:25
在OC的类中,我们如果在interface{}中定义了成员变量,如果我们想要在类外给他们赋值和获取他们的值,我们就需要给他们写set方法和get方法,否则会报错。如果成员变量名是age,对于set方法的格式要求是setAge,意思就是说set方法要以set开头后面的字符为变量的大写字母开头,get方法就是一般就是以变量名来命名。比如说
#import <Foundation/Foundation.h>@interface RectMno : NSObject{ @public NSInteger age;}@property (nonatomic,assign) int a;-(int)age;-(void)setAge:(int)age1;@end
#import "RectMno.h"@implementation RectMno-(void)setAge:(int)age1{ age=age1;}-(int)age{ return age;}@end只有给这个成员变量定义了get方法和set方法才能得到它的值和获取它的值点运算符在oc的类对象中不能访问成员变量,如rect.age=5,这里不是使用成员变量age,而是调用成员方法setAge,相当于给rect.age赋值,调用方法[rect setAge:5]; NSLog(@" %d ", rect.age); 这里也不是使用成员变量age,而是调用成员方法age, 使用dog.age表达式的值时,实际上就是调用成员方法age, [rect age]. " . " 不能调用成员变量,只是调用set函数和get函数的一种简写。 这里不能理解为定义了get函数和get函数就能调用成员变量.
而我们如果定义了一个属性就会自动生成get方法和set方法。但是如果同时重写了这个属性的get方法和set方法就会报错,单独重写任何一个都不会报错。主要是因为当你复写了get和set方法之后@property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了,你就必须要自己声明实例变量,比如说你定义了一个属性
@property (nonatomic, copy) NSString *name;
则在interface{}中就要定义一个NSString *_name;,否则会报错。因为一旦同时重写了setter、getter方法,并且没有实现@synthesizer,@synthesizer就不再生成实例变量。属性的作用是生成setter以及getter方法的实现,如果方法内部操作的实例变量未定义,系统会自动生成一个_属性名的实例变量,但是生成的实例变量的可见度是私有的,子类不可访问。
阅读全文
0 0
- ios-set和get方法
- iOS 理解@property和set&get方法
- iOS set和get
- set 和 get 方法
- get和set方法
- set和get方法
- get和set方法
- set和get方法
- ios 关于set方法和get方法重写的问题
- iOS 中 set,get方法
- set方法和get方法
- get方法和set方法
- iOS中set和get
- iOS中set和get
- iOS 中的set 和 get
- struts2 get 和set 方法
- oc003-set和get方法
- C#set和get方法
- 前端
- 绪论
- 酷酷的单词
- 各个平台的mysql重启命令
- 欢迎使用CSDN-markdown编辑器
- ios-set和get方法
- sklearn中的数据预处理
- LX_96YII 如何使用MemCache缓存
- 最简单的tab页面切换+动画
- hadoop琐碎
- Spring Boot 部署与服务配置
- laraval
- 退役后的飞机怎样处置?
- 在三台Centos虚拟机分主从机上设置SSH免密码登录