OC语言day04-03synthesize基本使用

pragma mark synthesize基本使用

pragma mark 概念

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: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 <Foundation/Foundation.h>

@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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容