是什么?
点语法还是方法的调用.点语法是Xcode编译器的一个功能!
有什么用?
提供一种更方便的方式去调用属性!
怎么用?
对象名.属性名(get方法)
对象名.属性名 = 数据;(set方法)
用的时候注意什么?
1,使用点语法的前提,成员变量的get方法,去掉get,直接属性名,但是set方法保持不变!
2,点语法的本质还是方法的调用!
3,点语法不能在set方法里面调用set方法,get方法里面调用get方法!(否则出现死循环)
set方法里面可以调用get方法,前提是get方法里面没有调用set方法!
get方法里面可以调用set方法,前提是set方法里面没有调用get方法!
4,点语法可以调用普通方法,只要符合规则!(一般不这么用)
规则就是,有声明 -(void)add; 有实现-(void)add{}
- Person.h
- #import <Foundation/Foundation.h>
- @interface Person : NSObject{
- NSString *_name;
- int _age;
- double _high;
- }
- -(void) setName:(NSString *)name;
- //原有get方法:getName,点语法的get方法:name.
- -(NSString *)name;
- -(void) setAge:(int)age;
- -(int)age;
- -(void) setHigh:(double)high;
- -(double)high;
- -(void)setWeight:(double)weight;
- -(double)weight;
- -(void)add;
- @end
- Person.m
- #import "Person.h"
- @implementation Person
- #pragma mark name的set和get方法
- -(void) setName:(NSString *)name{
-
- _name = name;
- //可以在set方法里面调用自己的get方法!(前提是get方法里面没有调用set方法,否则死循环)
- //不可以在set方法里面调用,自己的set方法,会死循环!
- //NSLog(@"名称:%@",self.name);
- }
- -(NSString *)name{
- //可以在get方法里面调用自己的set方法!(前提是set方法里面没有get方法,否则死循环)
- //不能在get方法里面调用,自己的get方法!否则进入死循环
- self.name =@"haha"; //[self setName:@"haha"];
- //self.name;
- return _name;
- }
- #pragma mark - age的set和get方法
- -(void) setAge:(int)age{
- _age = age;
- }
- -(int)age{
- return _age;
- }
- #pragma mark - high的set和get方法
- -(void) setHigh:(double)high{
- _high = high;
- }
- -(double)high{
- return _high;
- }
- //点语法的get方法不用get成员变量名.而是直接用成员变量名.
- #pragma mark - weight
- -(void)setWeight:(double)weight{
- NSLog(@"weight");
- }
- -(double)weight{
- return 11.0;
- }
- #pragma mark - add
- -(void)add{
- NSLog(@"add...");
- }
- main.n
- /*
- 29点语法的使用
-
- 1.直接用对象的指针名.(去掉get或set的)方法名.
- 2.前题:成员变量的get方法,不再需要get,但set方法保持不变.
-
- 本质:
- 点语法本质还是方法调用.去调用的类中定义的set get方法(get方法不需要前面加get);
- 点语法Xcode编译器的一个功能.本质上还是去调用方法.
- 提供一种更方便的方式去操作属性.
-
- 两个要注意的问题:
- 1.不能在set或get方法里用点语法调用自已.否则会出现死循环.
- 说明:1)在set方法里面调用set方法不可以(self.name =@"huh"),会出现死循环!
- 2)在set方法里面可以调用get方法,前提是get方法里面,没有调用set方法,否则死循环!
- 2.点语法可以调用普通方法,只要符合规则.但是不要这么做.
- 规则是什么?
- 有声明 -(void)add;
- 有实现 -(void)add{}
- */
- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[]) {
- Person *per = [Person new];
- [per setName:@"huh2"];
- [per setAge:32];
- [per setHigh:1.72];
- NSLog(@"姓名:%@,年龄:%d,身高:%.3f",[per name],[per age],[per high]);
-
- //点语法
- per.name = @"huh";
- per.age = 23;
- per.high = 1.70;
- NSLog(@"姓名:%@,年龄:%d,身高:%.3f",per.name,per.age,per.high);
- per.add;
- return 0;
- }
复制代码
|
|