iOS开发——实用技术OC篇&各种传值方式总结

单例
//.h
 1 + (Instannce *)shareInstance; 
//.m
 1 static Instannce *instance = nil;
 2 @implementation Instannce
 3 //定义一个创建单例对象的方法
 4 + (Instannce *)shareInstance {
 5     if (instance == nil) {
 6         instance = [[Instannce alloc] init];
 7     }
 8     return instance;
 9 }
10 //使用alloc的时候调用的方法instancetype
11 + (id)allocWithZone:(struct _NSZone *)zone {
12     if (instance == nil) {
13         instance = [super allocWithZone:zone];
14     }
15     return instance;
16 }
17 - (id)copy {
18     return self;
19 }
20 - (id)retain {
21     return self;
22 }
23 - (NSUInteger)retainCount {
24     //返回无符号最大值
25     return UINT_MAX;
26 }
27 - (oneway void)release {
28     //什么也不做
29 }
 代理
//.h
1 @protocol GetMessageProtocol <NSObject >
2 - (void)getNum:(NSString *)num withPassWord:(NSString *)pass;
3 @end
4 @property (nonatomic,assign) id<GetMessageProtocol> delegate;
//.m
1 if ([self.delegate respondsToSelector:@selector(getNum:withPassWord:)]) {
2         [self.delegate getNum:num.text withPassWord:passWord.text];
3     }
4 #pragma mark - GetMessageProtocol
5 - (void)getNum:(NSString *)num withPassWord:(NSString *)pass {
6
7 }
8 registerCtrl.delegate = self;
 通知 注意postNotificationName 必须一致
1  [[NSNotificationCenter defaultCenter] postNotificationName:NotificationName object:self userInfo:dic];  //dic存放在userinfo中   dic中存放要传过去的值是个字典
2 //接受通知
3     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeAction:) name:NotificationName object:nil];
 KVO监听
 1  keyPath: 监听的属性名
 2  object: 被观察的对象
 3  change: 属性值
 4  context: 上下设备文
 5
 6     [registerCtrl addObserver:self forKeyPath:@"属性名称1" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
 7     [registerCtrl addObserver:self forKeyPath:@"属性名称2" options:NSKeyValueObservingOptionNew context:nil];
 8 //触发的事件
 9 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
10     //object的值是registerCtrl
11     if ([keyPath isEqualToString:@"属性名称1"]) {
12
13     }else if ([keyPath isEqualToString:@"属性名称2"]) {
14
15     }
16 }

KVO观察者方法

//.h

@property (nonatomic, copy) NSString *属性名称1;
@property (nonatomic, copy) NSString *属性名称2;

//.m 必须通过setter方法改变值或者KVC

KVO方式

1 //触发的事件
2 [indexCollectionView addObserver:self forKeyPath:@"属性名称" options:NSKeyValueObservingOptionNew context:nil];
3         [posterCollectionView addObserver:self forKeyPath:@"pathIndex" options:NSKeyValueObservingOptionNew context:nil];
4 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
5     //得到改变后的新值
6     NSInteger index = [[change objectForKey:@"new"] integerValue];
7
8     }
9 }

Block block的返回值 block的名称 block的参数

1 typedef void(^SucccessBlock)(NSString *); //Block的定义
2 @property(nonatomic,copy)SucccessBlock loginBlock;  //block的声明  要用copy防止block的循环引用
3 _freindBlcok(friends); block的调用
4 [[MyXMPPManager shareManager] getFreind:^(NSArray *freinds) {}   //block的赋值 实现
时间: 2024-08-07 00:13:18

iOS开发——实用技术OC篇&各种传值方式总结的相关文章

iOS开发——实用技术OC篇&amp;单例模式的实实现(ACR&amp;MRC)

单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,Notification等, 那么这篇文章就简单介绍一下,我们开发中如果想要实现单例模式要怎么去实现! 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现在不同窗口之间传递数

iOS开发——实用技术OC篇&amp;多线程整合

多线程整合 本文知识对iOS开发中多线程的一些知识整合,关于一些概念和技术问题并没有过多的介绍,如果你想了解更多请查看笔者之前写的iOS开发之多线程详解(比较完整):但是有部分涉及到之前文章中没有的技术点和常识,比如加锁的方式,面试相关的,还有一些关于GCD的高级用法,希望你能认真看完,或许可以收获到很多! http://www.cnblogs.com/iCocos/p/4553103.html http://www.cnblogs.com/iCocos/p/4553262.html ??先来看

iOS开发——实用技术OC篇&amp;UIWebView与JS的交互

UIWebView与JS的交互 事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的HTML.除此之外,还需要禁用获取的HTML文本中自带的 < img > 标签自动加载,并把下载图片的操作放在native端来处理,并通过JS将图片在Cache中的地址返回给UIWebv

iOS开发——实用技术OC篇&amp;?Invocation简单介绍

Invocation简单介绍 方法一:运行时方法:(这里在之前的文章定时器的几种方法中说过:www.cnblogs.com/iCocos/p/4694581.html) 1:创建一个签名: NSMethodSignature *singature = [NSMethodSignature signatureWithObjCTypes:"[email protected]:"]; 这里我想如果你仔细的话肯定注意到了:后面的“[email protected]:”,这里是运行时的语法在这里

iOS开发——实用技术OC篇&amp;简单抽屉效果的实现

简单抽屉效果的实现 就目前大部分App来说基本上都有关于抽屉效果的实现,比如QQ/微信等.所以,今天我们就来简单的实现一下.当然如果你想你的效果更好或者是封装成一个到哪里都能用的工具类,那就还需要下一些功夫了,我们这里知识简单的介绍怎么去实现,不过一般我们开发都是找别人做好的,也没必要烂肺时间,除非你真的是大牛或者闲的蛋疼. 其实关于抽屉效果就是界面有三个View,其实一个主View其他两个分别是左边和右边的View,我们分别为他们添加手势,实现左右滑动显示对应的View. 一:所以,首先我们需

iOS开发——实用技术OC篇&amp;8行代码教你搞定导航控制器全屏滑动返回效果

8行代码教你搞定导航控制器全屏滑动返回效果 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view

iOS开发——实用技术OC篇&amp;事件处理详解

事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType     type; @property(nonatomic,readonly) UIEventSubtype  subtype; 事件产生的时间 @property(nonatomic,readonly) NSTimeInterval  timestamp; 事件传递 - hitTest:withEvent: SWIFT func hitTest(_ po

iOS开发——实用技术OC篇&amp;CocoaPods简单粗暴

CocoaPods简单粗暴 直接上代码,不要问为什么,照着做就可以,我也是这么做的,具体的细节,请查看相关文档,网上太多! 1:移除ruby镜像 1 $ gem sources --remove https://rubygems.org/ 2:新增淘宝镜像 1 $ gem sources -a http://ruby.taobao.org/ 3:查看列表 1 $ gem sources -l 4:正式安装 1 sudo gem install cocoapods 接下来就是开始使用了. 查看对应

iOS开发——实用技术OC篇&amp;给分类增加属性

给分类增加属性 关于分类的创建这里就不扯了,咱们直接开干 这里以文本看占位文字颜色为例一:简单方式(关键技术:KVC)1.在头文件定义一个属性 1 @property (nonatomic, strong) UIColor *placeholderColor; 2 /** 3 * 分类中只会产生属性对应Setter和Getter方法的声明,不会有实现,需要我们自己实现 4 */ 5 //-(void)setPlaceholderColor:(UIColor *)placeholderColor;