20150616点语法

本文介绍了Objective-C中Dot Syntax的使用方法,并通过Dog类的实例展示了如何实现属性的getter和setter方法,以及如何在.m文件中通过@synthesize关键字简化属性的声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  Dog.h
//  IOS15090616_ObjectiveC_DotSyntax
//
//  Created by Peng Junlong on 15/6/16.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Dog : NSObject
//{
//    NSString *_name;
//    NSInteger _age;
//}
- (id)init;

//方法一:实现只能是.m文件中的方法一,
//- (void)setName:(NSString *)aname;
//- (void)setAge:(NSInteger)aage;
//- (NSString *)name;
//- (NSInteger)age;

//方法二:实现可以是.m文件中的方法一,方法二和方法三 三种
//@property 关键字展开,默认展开setter和getter方法
//- (void)setName:(NSString *)aname;
//- (NSString *)name;
@property NSString *name;   //省略方法声明,实现的方法名和这个名字一样
@property NSInteger age;

<pre name="code" class="objc">//  Dog.m
//  IOS15090616_ObjectiveC_DotSyntax
//
//  Created by Peng Junlong on 15/6/16.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import "Dog.h"

@implementation Dog

- (id)init
{
    if (self = [super init]) {
        _name = @"小黑";
        _age = 2;
    }
    return self;
}

//方法一:
//- (void)setName:(NSString *)aname
//{
//    _name = aname;
//}
//
//- (void)setAge:(NSInteger)aage
//{
//    _age = aage;
//}
//
//- (NSString *)name
//{
//    return _name;
//}
//
//- (NSInteger)age
//{
//    return _age;
//}

//方法二:
//@synthesize 关键字展开setter和getter方法的实现
//可以在.h文件中省略_name和_age的声明,@synthesize展开了_name和_age
//@synthesize name = _name;   //name和_name表示的是同一个实例变量,编译器会自动根据name声明_name变量
//@synthesize age = _age;

//方法三:
//省略@synthesize

- (void)printDog
{
    NSLog(@"name = %@,age= %ld",[self name],[self age]);
}
@end

//方法三//@property//展开了setter和getter方法的声明及synthesize语句;//synthesize//展开@synthesize name = _name;// @synthesize age = _age;//展开的_name和_age是私有的,可以在{}中声明将其公开////@property NSString *name; //省略方法声明,实现的方法名和这个名字一样////@property NSInteger age;- (void)printDog;@end


//
//  main.m
//  IOS15090616_ObjectiveC_DotSyntax
//
//  Created by Peng Junlong on 15/6/16.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Dog.h"

//******************************
//*         点语法              *
//*    @property和@synthesize   *
//******************************

//点语法:方便其他程序员转移到IOS开发
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Dog *dog = [[Dog alloc] init];
        [dog printDog];
        [dog setName:@"小白"];
        [dog printDog];
        dog.name = @"小黄";// 等价于[dog setName:@"小黄"];编译器会将它自动编译成[dog setName:@"小黄"];
                         //dog->_age;//直接调用实例变量,变量必须是public的
        dog.age = 23;
        [dog printDog];
        
        //有等号,点放在等号左边时是等价于调用setter方法,否则是等价于getter方法
        //等价于调用[dog name]和[dog age]
        NSLog(@"name = %@ ,age = %li",dog.name,dog.age);;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值