第04天OC语言(03):synthesize基本使用

  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

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 
#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 

@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

你可能感兴趣的:(第04天OC语言(03):synthesize基本使用)