您好,欢迎访问代码之道!登录后台查看权限
  • 欢迎大神光临
  • 有朋自远方来 不亦悦乎

Objective-C语法基础属性2

Objective-C dz2015 2017-08-25 891 次浏览 0个评论

 OC对属性提供了非常简洁的语法支持,可以通过@property定义一个属性,自动生成一个私有变量、getter方法和setter方法,自动创建的变量名为"_属性名"。@property的格式为:

 @property (属性选项) 变量类型 属性名称

 下面的例子接口中给类声明了一个属性age,一个属性一般包括一个成员变量、setter方法、getter方法,属性用.语言赋值,等同于调用setter方法,使用.语法取值,相当于调用getter方法

//
//  main.m
//  oc-data3-1_属性2
//
//  Created by ahua on 2017/6/2.
//  Copyright © 2017年 ahua. All rights reserved.
//

#import <Foundation/Foundation.h>


/*
 OC对属性提供了非常简洁的语法支持,可以通过@property定义一个属性,自动生成一个私有变量、getter方法和setter方法,自动创建的变量名为"_属性名"。@property的格式为:
 @property (属性选项) 变量类型 属性名称
 下面的例子接口中给类声明了一个属性age,一个属性一般包括一个成员变量、setter方法、getter方法,属性用.语言赋值,等同于调用setter方法,使用.语法取值,相当于调用getter方法
 */
@interface PIPersion : NSObject
@property int age;
- (void)printAge;
@end

@implementation PIPersion
// @synthesize age; // 在@implementation中@synthesize属性,意义为属性实现setter和getter,但是可以省略。
- (void)printAge {
    // 自动生成了"_属性名"的私有成员变量。
    // 注意如果@synthesize了属性,生成的变量名和属性同名,没有"_"前缀
    NSLog(@"name=%d", _age);
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        PIPersion *obj = [[PIPersion alloc] init];
        obj.age = 18; // 属性可以使用.语法存取
        //[obj setAge:18]; // 证明生成了”set大写开头的属性“的setter方法
        NSLog(@"name=%d", obj.age); // 属性可以使用.语法存取
        NSLog(@"name=%d", [obj age]); // 证明生成了和属性同名的getter方法
        [obj printAge];
    }
    return 0;
}


已有 891 位网友参与,快来吐槽:

发表评论