OC语言day04-03synthesize基本使用

pragma mark synthesize基本使用

pragma mark 概念

pragma mark 代码

#import 
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
    [p setAge:88];
//    NSLog(@"age = %i, p->age = %i",[p age],p->_age);
//    NSLog(@"p->age = %i, p->_number = %i",p->_age,p->_number);
    
    NSLog(@"_age = %i,age = %i",p->_age,p->age);
    return 0;
}


Person.h //人类
#import 

@interface Person : NSObject
{
    @public
    int _age;
    int age;
    int _number;

}
#pragma mark property使用
/**
 property 是一个编译器指令
 在Xcode4.4之前, 可以使用@property 来代替 getter/setter方法的声明
 也就是说我们只需要写上@property 就不写
 
 编译器 只要看到@property, 就知道我们要生产某一个属性的setter/getter方法的说明
 
 - (void)setAge:(int)age;
 - (int)age;
 */

@property int age;

@end
Person.m
#import "Person.h"

@implementation Person

/*
 synthesize: 合成、综合
 @synthesize 是一个编译器指令, 他可以简化 getter/setter方法的实现
 
 什么是实现:
 在声明后面写上 大括号 就代表着实现
 
 1. 在synthesize 后面 告诉编译器, 需要实现哪个 @property生成的声明
 2. 告诉@synthesize, 需要将传入的值 赋值给谁和 返回谁的值 给调用者
 */
//@synthesize age = _age;    // 这个名字 必须和 @property的名字一样

//@synthesize age = _number;
#warning 如果在@synthesize后面没有告诉系统将传入的值赋值给谁, 系统默认会赋值给和@synthesize后面写得名称相同的成员变量
//_age ? age;
@synthesize age;

/*
 - (void)setAge:(int)age
 {
 _number = age;
 }
 
 #pragma mark getter
 
 - (int)age
 {
 return _number;
 }
 */


/*
#pragma mark setter
- (void)setAge:(int)age
{
    _age = age;
}

#pragma mark getter

- (int)age
{
    return _age;
}
*/

@end

你可能感兴趣的:(OC语言day04-03synthesize基本使用)