在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; 点语法 stu.age = 18; int age = stu.age; 2.点语法的本质 其实点语法的本质还是方法调用 当使用点语法的时候 编译器会自动展开成相应的方法 3.死循环注意 - (void) setAge : (int) age { self.age = age;//会引起死循环 } - (int) age { return self.age;//会引起死循环 } 成员变量的作用域 @private: 只能在当前类的对象方法中直接访问 @protected: 可以在当前类及子类的对象方法中直接访问 @public: 任何地方都可以直接访问 @package: 同一个'体系内'(框架)可以访问 介于@private和@public之间 @property和@synthesize关键字 1.@property用在@interface中 用来自动生成set和get的声明 #import <Foundation/Foundation.h @interface Person : NSObject { int _age; } //- (void) setAge : (int) age; //- (int) age; @property int age;//一定不能带_ 注意我的命名规范 @end 2.@synthesize用在@implementation中 用来自动生成set和get的实现 @implementation Person //- (void) setAge : (int) age { // _age = age; //} //- (int) age { // return _age; //} @synthesize age = _age;//注意我的命名规范 @end 3.@synthesize的细节 A: @synthesize age = _age; set和get实现中会访问成员变量_age 如果成员变量_age不存在 就会自动生成一个@private的成员变量_age B: @synthesize age; set和get实现中会访问成员变量age 如果成员变量age不存在 就会自动生成一个@private的成员变量age C: 手动实现 若手动实现了set方法 编译器就只会自动生成get方法 若手动实现了get方法 编译器就只会自动生成set方法 若同时手动实现了set和get方法 编译器就不会自动生成不存在的成员变量 4.@property 新特性 自从Xcode4.x后 @property就独揽了@synthesize的功能 也就是说 @property可以同时生成set和get的声明和实现 默认情况下 set和get方法中的实现 回去访问下划线'_'开头的成员变量 id类型 1.简介 万能指针 能指向任何OC对象 相当于NSObject * 2.使用 id p = [Person new];//注意: id后面不要加 * 3.局限性 调用一个不存在的方法 编译器会马上报错 |
请发表评论