黑马程序员 OC基础: 常用语法
来源:互联网 发布:android如何调用js方法 编辑:程序博客网 时间:2024/05/17 01:05
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——
点语法的使用
object c 中的语法糖
平时觉得调用 set get 方法太麻烦,不如试试点语法.
person.age = 10;// [person setAge:10];int a = person.age;// [person age];
set & get 方法的简化写法
@property age; 声明 @synthesize age = _age; 方法
用了上述的方法, 在 xcode 中会帮我们自动生成, set get 方法的声明和实现.
在新版本中的 xcode 中更方便(4.2以上)
都不需要@ synthesize 去实现方法
只需要一个@ property 就可以生成 set get 方法的声明和实现
@interface Dog : NSObject@property int age;@end
1.生成 set get 方法声明
2.生成 _age 成员变量
3.生成 set get 方法实现
生成的变量作用域默认为 @private
如果我想定义为其它作用域,还是得自己手写 ste 和 get 方法.
在已经声明了 set get 方法的情况下, xcode 不会再次重复自动生成如果同时实现了 setter getter 方法,编译器就不会自动生成不存在的成员变量
id 关键字
万能指针,能操作任何 oc 对象
写法 :
id d = [Person new];
构造方法
用来初始化对象的方法,是个对象方法.
Person *p = [ Person new];Person *p = [ [Person alloc] init]; // 真正的初始化对象过程
init 是构造方法
new 方法返回的成员变量都是初始化后的0
所以我们需要对成员变量初始化一定的值时
可以重写对象的 init 方法来满足自己的需要
重写构造方法所要满足的条件:
1.一定要调用回 super 的 init 方法:初始化父类中声明的成员变量和属性2.如果初始化对象成功,初始化成员变量3.返回初始化完毕的对象
重写方法如下 :
(id) init{ self = [super init]; if(self != nil) { _age = 10; } return self;}
再次初始化 Person, _age 的初始化值为10不再为0
自定义构造方法
规范:
1.一定是对象方法,-减号开头2.一般返回值为 id 类型3.方法名一般 init 开头
(id)initWithName:(NSString *)name { self = [super init]; if(self != nil) { _name = name; } return self; }Person *P = [[Person alloc] initWithName:@“Rose”];
这样还可以传递参数进行初始化
Category 分类/类别
可以给某一个类扩充一些方法 (不修改原来类的代码情况下)
//声明@interface Person (XB) /*类名+(分类名称)*/@end//实现@implementation Person@end
如此便于模块分工,合作编写程序
分类的作用: 在不改变原来类内容的基础上,可以为类增加一些方法
使用注意:
1.分类只能增加方法,不能增加成员变量2.分类方法实现中可以访问原来类中声明的成员变量3.分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
+load 和 + initialize 方法
+load 当程序启动时,就会加载所有类和分类,并调用所有类和分类的 +load 方法
先加载父类,再加载子类; 也就是先调用父类的+load, 再调用子类的+ load
先加载原始类,在加载分类
不管程序运行过程中有没有用到这个类,都会调用+ load 加载
+initialize 在第一次使用某个类(比如创建对象等),就会调用依次+ initialize 方法
一个类只会调用一次+ initialize 方法,先调用父类的,再调用子类的
有需要时可以重写这两个函数,在我们 加载/首次调用 类时做一些我们想做的事情.
description 方法
Person *p = [[Person alloc] init];p.age = 20;p.name = @“Jake”;NSLog(@“%@”,p);// 默认情况下,利用 NSlog 和%@输出对象时,结果是:<类名: 内存地址>
于是我们可以重写类的 description 方法,来实现打印对象中所有元素的功能
- (NSString *)description { return [NSString stringWithFormat:@“age = %d, name = %@“, _age, _name]; }
使用 NSLog 和%@输出某个对象时,会调用对象的- description 方法,输出返回值.
若使输出某个类对象时,会调用对象的+ description 方法,输出返回值.
SEL
每个方法都有与之对应的 sel 类型对象根据一个 sel 对象就可以找到方法的地址,进而调用方法
这一点我觉得挺像是对 函数指针 的一种封装
sel 对象的创建
SEL s = @selector(test); // 把方法名转换为 sel 对象SEL s2 = NSSelectorFromString(@“test”); // 把字符串转换为 sel 对象
sel 对象的调用
[p performSelector:s]; // 调用 sel 对象所指的方法[p performSelector:s withObject:@“123”]; // 向调用的方法传递字符串对象
核心语法部分目前看到的基本就这些
- 黑马程序员 OC基础: 常用语法
- 黑马程序员.............OC基础语法
- 黑马程序员------OC基础-----基础语法总结
- 黑马程序员 _5 OC基础 简单语法
- 黑马程序员——OC基础语法
- 黑马程序员——OC基础语法
- 黑马程序员----OC基础--核心语法、关键字
- 黑马程序员——oc基础语法
- 黑马程序员-IOS基础之OC语法
- 黑马程序员------OC基础语法的使用
- 黑马程序员-OC回顾-基础语法
- 黑马程序员-IOS-OC基础-OC简介及基本语法
- 黑马程序员-IOS-OC基础-OC简介及基本语法
- 黑马程序员-IOS-OC基础-OC特有语法
- 黑马程序员——OC基础---OC特有语法
- 黑马程序员-OC语言基础:OC特有语法
- 黑马程序员—OC语言基础—基础语法知识
- 黑马程序员-IOS-OC基础-面向对象语法一
- 蓝桥杯 ALGO-94 新生舞会(结构体)
- struts2,spring,hibernate三大框架整合
- java Pattern和Matcher详解
- CI框架中的SQL注入隐患
- Direct3D 12 尝鲜(三): Pipeline State Object
- 黑马程序员 OC基础: 常用语法
- 初学PHP如何在浏览器上显示东西
- 计算机组成原理--数制
- GDB使用方法
- 17x^2+16xy+17y^2=2250000(爱心函数)canvas实现代码(效果如图)
- Java操作符总结
- [LinkedIn] Array of products of all other numbers (except/without the current number ) (no division)
- FMDB的使用
- (四)Unity5.0新特性------音频混音器(转自官方博客)