OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字

Person.h

#ifndef oc_Person_h
#define oc_Person_h

@interface Person : NSObject
{
    int age;
@protected
    float height;
}
- (int) age; //get方法
- (void) setAge:(int)pAge;  //set方法

@end

#endif

Person.m

#import <Foundation/Foundation.h>
#import "Person.h"
@implementation Person

- (int) age
{
    return age;
}

- (void) setAge:(int)pAge
{
    age = pAge;
}

@end

main.m

int main()
{
    Person* per = [[Person alloc] init];
    int age = [per age]; //调用get方法
    [per setAge:16]; //调用set方法

    //使用“.” 来调用get/set  使用的都是原始变量名,这就要求变量的get、set都符合约定
    int age2 = per.age; //get
    per.age = 17; //set

    return 0;
}

每次这样写get/set方法,很麻烦,OC有一个自动化的方法,即使用@proterty和@synthesize关键字

Person.h

#ifndef oc_Person_h
#define oc_Person_h

@interface Person : NSObject
{
    int age;
@protected
    float height;
}
//- (int) age;
//- (void) setAge:(int)pAge;

@property int age; //编译器自动解释成 int age的get/set方法 的声明

@end

#endif

Person.m

#import <Foundation/Foundation.h>
#import "Person.h"
@implementation Person

//- (int) age
//{
//    return age;
//}
//
//- (void) setAge:(int)pAge
//{
//    age = pAge;
//}
@synthesize age; //编译器自动解释成 age的get、set方法实现

@end
时间: 2024-11-06 07:39:08

OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字的相关文章

iOS学习笔记---oc语言第三天

继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量也继承过来了,只是不能访问) 面向对象提供了继承语法.能大大简化代码,把公共的方法和实例对象写在父类里.子类只需要写自己独有的实例变量和方法即可 继承既能保证类的完整,又能简化代码 继承特点 oc中只允许单继承 没有父类的类称为根类,oc中得根类是NSObject(祖宗) 继承的内容:所有的实例变量

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员——oc语言学习心得----NSFileManager

黑马程序员——oc语言学习心得----NSFileManager -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 自己总结了下NSFileManager的简单几个用法 : // 首先要创建文件管理器 NSFileManager *fm=[NSFileManager defaultManager]; 1,判断文件是否存在 fileExistsAtPath: 2,判断文件是否是目录 fileExistsAtPath: 3, 判断文件是否可读

Go语言学习笔记(二) [变量、类型、关键字]

日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变量的类型在变量名的后面.例如:不是,int a,而是 a int.当定义了一个变量,它默认赋值为其类型的 null 值.这意味着,在 var a int后,a 的 值为 0.而 var s string,意味着 s 被赋值为零长度字符串,也就是 "". 3.Go语言的变量声明和赋值 在Go中使

Objective-C学习笔记(二十)——成员变量对对象方法与类方法的可见性分析

之前在学习C++,或者java的时候,都会遇到一个可见性的问题,这篇文章我们来讨论声明的成员变量对对象方法(减号方法)和类方法(加号方法)的可见性问题. (一)代码一:成员变量对减号方法可见,对加号方法不可见. 在People.m中声明一个成员变量:NSString *_peopleName;然后发现可以在减号方法中访问该变量,在加号方法中不可以访问该变量. -(void)ObjectShow{ NSLog(@"我是对象方法"); [email protected]"成员变量

22-黑马程序员------OC 语言学习笔记---分类

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------1    分类分类的语法格式为:1.分类的声明:@interface 类名 (分类名称)// 方法声明@end2.分类的实现:@implementation 类名 (分类名称)// 方法实现@end在声明部分,分类只能增加方法,不

25-黑马程序员------OC 语言学习笔记--- 协议

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 协议用于定义多个类应该遵守的规范,协议不提供任何实现.协议体现的是规范和实现分离的设计哲学.协议用来用来声明一大堆方法,不能声明成员变量. 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明.只要某个类遵守了这个协议

黑马程序员——OC学习小结------成员变量以及对应的set、get方法

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.总结 1.只有利用类名调用类方法的时候,不需要在类名后面写*.其他情况下,类名后面统一加上一个* Circle *c1 = [Circle new]; - (BOOL)isInteractWithOther:(Circle *)other; 2.返回值是BOOL类型的方法,方法名一般都以is开头 - (BOOL)isInteractWithOther:(Circle *)other; 3.