您的位置:首页 > 编程语言 > C语言/C++

黑马程序员——OC语言——点语法

2015-04-16 22:22 267 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一,概念

   点语法集合set和get方法,使代码更加简洁。

二,利用点语法替换set方法和get方法

方法调用

    Student *stu = [Student
new];
    [stu
setAge:100];
    int age = [stu
age];
    点语法

    stu.age =
100;
    int age = stu.age;

三,点语法的本质

  其实点语法的本质还是方法调用
  当使用点语法时,编译器会自动展开成相应的方法

四,死循环注意

- (void) setAge:(int)age {
// 下面的代码会引发死循环
self.age = age;
}
- (int)age {
// 下面的代码会引发死循环
return self.age;
}

下面用代码验证
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
int _age;
NSString *_name;
}

- (void)setAge:(int)age;
- (int)age;

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

@end
@implementation Person

- (void)setAge:(int)age
{
//_age = age;

NSLog(@"setAge:");

// 会引发死循环
//self.age = age; // [self setAge:age];
}

- (int)age
{
NSLog(@"age");
return _age;
// 会引发死循环
//return self.age;// [self age];
}

- (void)setName:(NSString *)name
{
_name = name;
}

- (NSString *)name
{
return _name;
}
@end

int main()
{
Person *p = [Person new];

// 点语法的本质还是方法调用
p.age = 10; // [p setAge:10];

int a = p.age; // [p age];

p.name = @"Jack";

NSString *s = p.name;

NSLog(@"%@", s);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: