黑马程序员——[oc]核心语法1
来源:互联网 发布:忙与闲 知乎 编辑:程序博客网 时间:2024/05/22 18:33
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一:点语法
1>用点语法替换set方法和get方法
**其实点语法的本质还是方法调用
**当使用点语法时,编译器会自动展开成相应的方法
3>死循环注意二:成员变量的作用域
局部变量,全局变量都有自己的作用域。成员变量也有自己的作用域。
1>作用域类型
1.@private:只能在当前类的对象方法中直接访问
(可以用get方法、set方法访问);
(在@implementation中声明的对象默认为@private,@public无效)
2.@protect:只能在当前类和子类的对象方法中直接访问
(在@interface中如果不加作用域类型,默认为@protect)
3.@public:任何地方都可以直接访问成员变量
4.@package:同一个“体系内”(框架)可以访问,介于@private和@public之间。
(只要处在同一个框架中,就能直接访问对象的成员变量。)
注意:没有@interface,只有@implementation,也可以开发一个类。
@implementaion中不能定义和@interface中同名的成员变量。
三:编辑器特性:@property和@synthesize
1> @property
用在@interface中,可以自动生成成员变量的setter和getter声明;
用在@implementation 中,可以自动生成成员变量的set和get方法的实现。
@synthesize age = _age;
1.setter和getter实现中会访问成员变量_age
2.如果成员变量_age不存在,就会自动生成一个@private的成员变量_age
@synthesize age;
1.setter和getter实现中会访问成员变量age
2.如果成员变量age不存在,就会自动生成一个@private的成员变量age
手动实现
1.若手动实现了setter方法,编译器就只会自动生成getter方法
2.若手动实现了getter方法,编译器就只会自动生成setter方法
3.若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
4> @property新特性自从Xcode 4.x后,@property就独揽了@synthesize的功能。也就是说,@property可以同时生成setter和getter的声明和实现
默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量
所以在现在的Xcode版本下,可以最大化的简洁书写。id类型的定义
typedefstruct objc_object {
Class isa;
} *id;
注:id类型后面不能加*;
NSString *_name;
->id _name;
五:构造方法
1>对象创建两部曲
[person new] 这里面的new完整的创建了一个可用的对象
1.分配存储空间 (类方法) +alloc
2.初始化 (对象方法)-init
// 调用+alloc 分配存储空间
Person *p1 = [Person alloc];
// 调用- init进行初始化
Person *p2 = [P1 init];
以上两步可以浓缩为一步
Person *p3 = [[person alloc] init];
-init方法就是构造方法
2>构造方法
构造方法就是用来初始化对象的方法,是个对象方法。以‘-’开头。
初始化对象原理:
重写构造方法的注意点:
1.先调用父类的构造方法[super init]
2.再进行子类内部成员变量的初始化。
- 黑马程序员——OC核心语法
- 黑马程序员——oc核心语法1
- 黑马程序员——[oc]核心语法1
- 黑马程序员 OC核心语法1
- 黑马程序员——OC语言核心语法
- 黑马程序员——OC语言基础篇---核心语法
- 黑马程序员——OC-10:核心语法
- 黑马程序员——[OC]核心语法2
- 黑马程序员—OC语言基础—核心语法小结
- 黑马程序员——OC中的核心语法
- 黑马程序员——OC学习笔记04 核心语法
- 黑马程序员—04OC核心语法_01
- 黑马程序员—05OC核心语法_02
- 黑马程序员----OC核心语法
- 黑马程序员———OC基础语法(三)---核心语法(1)
- 黑马程序员———OC基础语法(四)---核心语法(2)
- 黑马程序员——OC核心语法点语法,成员变量,@property和@synthetic,构造方法
- 黑马程序员-OC语言核心语法(1)
- Java ThreadLocal的使用
- 单点登录SSO的实现原理
- HDU 1698
- oracle基础知识
- Linux 用户态与内核态的交互
- 黑马程序员——[oc]核心语法1
- DNS原理及其解析过程
- mysql的表分区技术
- IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
- [LeetCode] Remove Nth Node From End of List
- 从汇编学习c++ 之 类的方法调用
- 添加远程库
- CSU 1581Clock Pictures Hash
- ONOS Blackbird性能评估