3--OC -- 点语法

   3.OC -- 点语法

1、方法名

// 冒号也是属于方法名的一部分
- (void)setAge:(int)age;                  // 方法名是 setAge:
- (void)setAge; // 方法名是 setAge - (void)setAge:(int)age andNo:(int)no; // 方法名是:setAge:andNo: 

2、点语法

a)定义一个Person类,Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject { // 在大括号里的私有变量age int age; } // 声明私有变量age的set方法 - (void)setAge:(int)newAge; // 声明私有变量age的get方法 - (int)age; @end 

b)Person.m

#import "Person.h"

@implementation Person

// 实现age的set方法 - (void)setAge:(int)newAge { age = newAge; } // 实现age的get方法 - (int)age { return age; } @end 

c)main.m

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

int main(int argc, const char * argv[]) { @autoreleasepool { // 实例化一个person变量 Person *person = [[Person alloc] init]; // Person *person = [Person new]; // 调用set方法 // 相当于 [person setAge:20]; person.age = 20; // 调用get方法 // 相当于 int age = [person age]; int age = person.age; NSLog(@"age = %i", age); } return 0; } 

d)发现了上面的 person.age 了没?,它既可以是get方法,也可以是set方法,这得看他在等号的哪边。如果是在等号左边,编译器会把它当做set方法。反之,则是get方法。不信,我们可以在set方法和get方法里打印一下,测试就知道了。

Person.m

// 实现age的set方法
- (void)setAge:(int)newAge {
    NSLog("调用了Person类的set方法");
    age = newAge;
}

// 实现age的get方法 - (int)age { NSLog("调用了Person类的get方法"); return age; } 

e)person.age 看起来好像是像 java 代码里调用 age 变量一样,所以为了避免混淆,我建议大家把私有变量的名字前面都加个下划线

Person.h

@interface Person : NSObject {
    // 在大括号里的私有变量age
    int _age;
}

Person.m

// 实现age的set方法
- (void)setAge:(int)newAge {
    NSLog("调用了Person类的set方法");
    _age = newAge;
}

// 实现age的get方法 - (int)age { NSLog("调用了Person类的get方法"); return _age; } 

f)java代码里有这样子的set和get方法

// 一个简单的set方法,前提是已有了一个age私有变量
public void setAge(int age) { this.age = age; } // get方法 public int getAge() { return this.age; } 

那 OC 可以这样写吗,OC 有个 self 跟 java 的 this 很类似:

// 实现age的set方法
- (void)setAge:(int)newAge {
    //_age = newAge;
    self.age = newAge; } // 实现age的get方法 - (int)age { return self.age; } 

如果这样写就完蛋了!请记住不要这样写!

1)get方法中的self.age代表什么,上面刚讲,在等号左边代表set方法,一直set方法无限循环下去了。。。

2)set方法中的self.age也是一样,代表的是get方法,一直get方法无限循环下去也是醉了。。。

 

转载于:https://www.cnblogs.com/stephenmc/p/5169702.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值