黑马程序员——OC基础---基础语法
------- android培训、ios培训、期待与您交流! ----------
内容概括:
1、@property参数。
2、ARC特点及使用。
3、最后一个类型black。
4、Protical的基本使用。
一、property参数
@property (nonatomic, retain) 类名 *属性名;
@property (nonatomic, retain)Car *car;
@property (nonatomic, retain)id car(特殊情况);
2、非OC对象类型(int/double/enum/struct)
@property (nonatomic, assign)类型名称 属性名;
@property (nonatomic, assign)int age;
二、ARC的使用
1、不允许调用release、retain、retaincount。
2、允许重写dealloc,但是不允许调用[ supper dealloc]
3、@property参数
*strong :表示强指针(默认,适用于OC对象)
*weak :表示弱指针(适用于非OC对象)
4、循环引用的解决办法是一端使用strong,另一端使用weak。
三、最后一个OC类型block
1、block需要掌握的东西。
1> 如何定义block变量。
Int(^Sumblock)(int ,int);
Void (^ MyBlock)( )
2、如何利用block封装代码。
^(int a , int b ){ Return a+b; };
^(int a, int b){NSLog(@”…………”)};
^{NSLog(@”…………”)};
3、block访问外部变量
1> block内部可以访问外部变量。
2> 默认情况下,block不可以更改外部变量。
3> 给局部变量加上_block关键字,这个局部变量就可以再block内部修改。
4> 利用typedef定义block类型。
例: typedef int(^MyBlock)(int, int);
MyBlock b1, b2;
四、protocal的基本用途
1、可以用来声明交给任何类使用的方法(不能声明成员变量)。
2、只要某个类遵守了这个协议就相当于拥有这个协议当中的所有方法声明。
3、只要父类遵守了某个协议,就相当于子类也遵守了这个协议。
1> 类遵守协议写法:
@interface Person :NSObject <protocal>
2> 协议遵守协议写法:
@protocal Myprotocal <NSObject>
@required // 需要执行
- (void)test2
- (void)text3
@optional // 可选 // 方便程序员间交流。
- (void)text4
@end
3> 定义一个变量的时候,限制一个变量遵守协议,要求obj3保存的对象必须遵守,MyProtocal这个协议:
NSObject <MyProtocal >*obj3 = [[NSObject alloc] init];
例:@property(nonatomic, strong) 类名 <协议名称> *属性名
5、协议可以定义在单独的.h文件中,也可以定义在某个类中。
1> 如果这个协议只用在某个类中,应该定义在该类中。
2> 如果是用在很多类中,就单独定义在.h文件中。
6、分类可单独定义在.m文件中,也可定义在原来类中。
1> 一般情况下都是定义在单独文件中。
2> 定义在原来类中的分类只求能看懂语法。