OC学习笔记5
来源:互联网 发布:创新创业网络课答案 编辑:程序博客网 时间:2024/05/16 11:18
OC学习笔记5
A. 变量的可见性
类型:
@private:只能在当前类的对象方法中直接访问
@protected:可以在当前类以及子类的对象方法中直接访问
@public:任何一个地方都可以访问
@package:同一个“体系内”(框架)可以访问,介于@private和@public之间
B. @property
a.用在@interface中
b.用来自动生成setter和getter的声明
C.用@property int age;就可以代替下面的两行
- (int)age; // getter
- (void)setAge:(int)age; // setter
@property示例
C.@synthesize
a.用在@implementation中
b.用来自动生成setter和getter的实现
c.用@synthesize age = _age;就可以代替
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
@synthesize示例
D. @synthesize的细节
@synthesize age=_age;
a. Setter和getter实现中会访问成员变量_age;
b. 如果成员变量_age不存在,就会自动生成一个@private的成员变量
C. @synthesize age;
Setter和getter实现中会访问成员变量age;
如果成员变量age不存在,就会自动生成一个@private的成员变量age
手动实现
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
@property新特性
新版本的Xcode中@property独揽了@synthesize的功能,@property可以同时生成setter和getter的声明和实现
默认情况下,setter和getter方法中的实现,会访问下划线_开头的成员变量
万能指针 id简介
万能指针,指向任何OC对象,相当于NSObject *
Id类型定义
typedef struct objc_object {
Class isa;
} *id;
使用
//注意:id后面不要加上*
Id p=[Person new];
局限性
掉用一个不存在的方法,编译器会马上报错
对象创建原理
New的拆分两部曲
A.分配内存(+alloc)
B.初始化(-init)
C.示例
Person *p1 = [Person alloc];
D.Person *p1 = [p1 init];
E.合成一句后:
F.Person *p = [[Person alloc] init];
Init方法的重写过程
- (id)init
{
if (self = [super init])
{
_age = 10;
}
return self;
}
自定义构造方法
构造方法的一些规范
A.返回值是id类型
B.方法名都以init开头
- (id)initWithAge:(int)age {
if (self = [super init]) {
_age = age;
}
return self;
}
- OC学习笔记5
- ios学习笔记 oc基础5
- OC 学习笔记5 NSDate NSDateFormatter
- Oc 学习笔记
- OC 基础学习笔记
- OC学习笔记[注意事项]
- OC学习笔记
- OC学习笔记
- [OC学习笔记]对象
- [OC学习笔记]数据类型
- [oc学习笔记]字符串
- [oc学习笔记]数组
- OC学习笔记
- oc学习笔记
- OC学习笔记
- oc学习笔记
- OC学习笔记共享
- OC学习笔记
- Golang 闭包的理解
- PC 处理器被边缘化,但在市场还占主导地位!
- SSH--Hibernate传值进数据库
- 中位数计数(暴力思维题)
- scanf 函数报错 error C4996: 'scanf'
- OC学习笔记5
- 初识opencv人脸检测
- 调用远程API接口,获取服务器数据
- 【AQS框架】戏(细)说Executor框架线程池任务执行全过程(下)
- RHEL7.3下Mariadb安装及部署
- 私活,永远解救不了自己屌丝的人生!(转载)
- 深入理解Struts2原理之自己实现Struts2框架
- Web service
- Linux用户名 不在 sudoers文件中,此事将被报告。