objective-c 快速学习1-意图实现之 函数指针和block
为了快速掌握oc的基本语法,按照上面文章速度学习oc .大概用了4~5天时间。粗越了解下oc.只是粗越了解。
目的主要还是实践 这个 “学习理论”。并完善这个学习理论。
鬼知道以后还要学习多少语言呢?
1.数字处理:四则运算。
2.字符串处理:分割和组合。
3.集合处理:可变和不可变集合。 dictionary(oc没写例子)
4.对象和继承:人,雇员,老板, 放入集合并多态的表示他们的薪水和税收。
5.意图和实现的分离(事件):单个函数指针的实现(c风格和block)。一组函数指针的实现(protocal)
6.io的处理。没写
7.内存管理
// // main.m // practice // 通过c的直接的函数指针,来实现意图和实现的分离。(不喜欢用回调来解释。回调在不同场合有不同用途,在这里不如直接说成意图和实现分离) // Created by liangshun on 18/5/30. // Copyright © 2018年 liangshun. All rights reserved. #import <Foundation/Foundation.h> //typedef int(* type_pfun) (int,int);//type_pfun 是某种函数指针 数据类型. typedef void(*clickCallback) (int m); void onClick_1(int m) { NSLog(@"button funcont1:%i",m); } void onClick_2(int m) { NSLog(@"button funcont2:%f",(float)m); } @interface MyButton : NSObject @property clickCallback myCallBack;//我会实现一个意图,但具体实现可以在外部扩展。 -(void) Click:(int)m; @end @implementation MyButton -(void)Click:(int)m { self.myCallBack(m); } @end int main(int argc, const char * argv[]) { int money=3; MyButton *submitButton=[MyButton new]; submitButton.myCallBack=onClick_1; [submitButton Click:money]; submitButton.myCallBack=onClick_2; [submitButton Click:money]; return 0; }
// // main.m // practice // block ,在意图和实现分离的场合中,是一种直接,简洁,但不可复用的写法。 // Created by liangshun on 18/5/30. // Copyright © 2018年 liangshun. All rights reserved. #import <Foundation/Foundation.h> typedef void(^clickCallback) ();//定义一个block来表达意图。 @interface MyButton : NSObject @property clickCallback myCallBack;//我有一个意图,但具体实现可以在外部扩展。 -(void) Click; @end @implementation MyButton -(void)Click { self.myCallBack(); } @end int main(int argc, const char * argv[]) { MyButton *submitButton=[MyButton new]; int money=3; submitButton.myCallBack=^//直接写实现,不可复用,但是省去传参数的麻烦。 { NSLog([NSString stringWithFormat:@"fun1:%i",money]); }; [submitButton Click]; submitButton.myCallBack=^ { NSLog([NSString stringWithFormat:@"fun2:%f",(float)(money)]); }; [submitButton Click]; return 0; }