- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
synthesize基本使用
学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)
什么是方法的实现,setter、getter方法实现
一、本章笔记
一.
synthesize 是一个编译器指令,它可以简化 我们getter/setter方法的实现
什么是实现:
在声明后面写上大括号 就代表着实现
1.@synthesize 后面告诉编译器, 需要实现那个 @property 生成的声明
2.告诉 @synthesize , 需要传入的值 赋值给谁 和返回谁的值给 调用者
二.
如果有两个
{
int _age;
int _number;
}
@synthesize age = _number;
那么到时候 访问的_age 是空的, 访问 _number才有值
三.
如果在@synthesize 后面没有告诉系统 将传入的值赋值给谁, 系统默认会赋值给 和 @synthesize后面写的名称相同的成员变量 ---- @synthesize age;最后等于 @synthesize age = age;
二、code
main.m
######main.m
#pragma mark 03-synthesize基本使用
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
Person *p = [Person new];
[p setAge:22];
// NSLog(@"age = %i, p->age = %i",[p age],p->_age);
// NSLog(@"_age = %i, _number = %i",p->_age,p->_number); // 0 , 22
NSLog(@"_age = %i, age = %i",p->_age,p->age);
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int _age;
int age;
int _number;
}
@property int age;
@end
>>>.m
#import "Person.h"
@implementation Person
#pragma mark 1.synthesize 是什么 有什么用
/*
synthesize 是一个编译器指令,它可以简化 我们getter/setter方法的实现
什么是实现:
在声明后面写上大括号 就代表着实现
1.@synthesize 后面告诉编译器, 需要实现那个 @property 生成的声明
2.告诉 @synthesize , 需要传入的值 赋值给谁 和返回谁的值给 调用者
- (void)setAge:(int)age
{
_number = age;
}
- (int)age
{
return _number;
}
*/
#pragma mark 测试
// 如果在@synthesize 后面没有告诉系统 将传入的值赋值给谁, 系统默认会赋值给 和 @synthesize后面写的名称相同的成员变量 ---- @synthesize age;最后等于 @synthesize age = age;
//@synthesize age = _age;
//@synthesize age = _number;
@synthesize age;
#pragma mark 2.@synthesize 等同于什么
/*
// @synthesize age = _age; 等同于👇
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
*/
@end