21-黑马程序员------OC 语言学习笔记---点语法和作用域

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1    合成存取方法
为成员变量实现setter和getter方法,虽然并不难,但如果一个类中包含10个甚至更多的成员变量,为每个成员都编写setter、getter方法將是一件令人反胃的事情。OC语言提供了自动合成setter和getter方法,而且如果开发者需要自己控制某个setter和getter方法的实现,开发者依然可以提供setter和getter方法,这个由开发者自定义的setter和getter方法将会覆盖系统自动合成的setter和getter方法。
系统自动合成setter和getter的方法如下:
1、在类的声明部分使用@property指令,比如@property int age;系统会自动生成如下语句:
- (void)setAge:(int)age;
- (int)age;
2、在类的实现部分使用@synthesize指令,比如@synthesize age = _age;,其中_age是在声明部分的成员变量,系统就会自动实现setter和getter方法

#import <Foundation/Foundation.h>
#import "Person.h"
int main()
{
    Person *p = [Person new];
    p.age = 23;
    int c = p.age;
    
    p.name = @"guopeng";
    NSString *gp = p.name;
    
    NSLog(@"%d%@",c,gp);
    
    return 0;
}

  

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    int _age;
    NSString *_name;
}
- (void)setAge:(int)age;
- (int)age;

- (void)setName:(NSString *)name;
- (NSString *)name;

@end

  

#import "Person.h"

@implementation Person
- (void)setAge:(int)age
{
    _age = age;
}
- (int)age
{
    return _age;
}
- (void)setName:(NSString *)name
{
    _name = name;
}
- (NSString *)name
{
    return _name;
}
@end

  

@public : 在任何地方都能直接访问对象的成员变量

 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private

 @protected : 可以在当前类及其子类的对象方法中直接访问  @interface中默认就是@protected

 @package : 只要处在同一个框架中,就能直接访问对象的成员变量

 @interface@implementation中不能声明同名的成员变量

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}
#import <Foundation/Foundation.h>

@interface Person : NSObject

@end
#import "Person.h"

@implementation Person

@end

  

转载于:https://www.cnblogs.com/iceshan/p/4492879.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值