`
ydbc
  • 浏览: 777652 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

如何建立基于CocoaPods的ReactiveCocoa工程

 
阅读更多

ReactiveCocoa 和 CocoaPods 一样也是目前很流行的 能方便和提高效率的框架.

其实不光ios 学习任何一门语音最快最直接的方法就是上手. 如果单单是看看文档只能是走马观花得到一个感性认识罢了.前两天之前一个公司的测试人员跟我联系说如何学习JAVA,我问他是怎么学的,他说从网上下了好多视频教程,一直在看视频教程,也买了一些书. 我问他敲了多少代码,他说很少. 其实跟他一样的人不少. 我觉得任何事情都不简单,因为看起来简单的事情自己没有实际做过的话 往往会遇到各种各样的问题. 这也是为什么在工作中制定项目进度计划的时候 我尽量给自己和团队中的人多争取时间的最主要的一个因素.

好了,自己一些啰嗦和感悟. 下面开始正式.


What is Reactive Cocoa?

RAV is an Object-C framework for Functional Reavtive Programming;
两个关键点:
1:framework 既然是framework 那就跟你用的其他framework没什么区别 无非就是加到工程中引用罢了.不做多余解释
2:Functional Reavtive Programming 实时响应式编程

虾米引用被阿里收购后现在先上的mac版本的虾米音乐就是用Reactive Cocoa开发的.用阿里人自己的话来说就是

好东西啊,以前我们用 KVO 或 Notification 来自动绑定数据,改用 ReactiveCocoa 写以后,代码结构更佳简单清晰,同时代码行数直接减少 60% 以上

来点直观的对比吧,比如我们想要实现一个需求:当变量中的字符串改变后即时做出相应的反馈 我们用KVO 需要如下这样做

// In your viewDidLoad/awakeFromNib/init
[self addObserver:self 
       forKeyPath:@"someString" 
          options:NSKeyValueObservingOptionNew 
          context:&someStringChangeContext];

// In dealloc
[self removeObserver:self 
          forKeyPath:@"someString" 
             context:&someStringChangeContext];

// Elsewhere in your class
- (void)observeValueForKeyPath:(NSString *)keyPath 
                      ofObject:(id)object 
                        change:(NSDictionary *)change 
                       context:(void *)context
{
    if (context == &someStringChangeContext) {
        if ([keyPath isEqualToString:@"someString"]) {        
            // Do a bunch of stuff here
        }
    }
}

上面一坨代码 在应用Reactive Cocoa后 只有短短一行

[RACObserve(self, someString) distinctUntilChanged] subscribeNext:^(NSString *string) {
    // Do a bunch of things here, just like you would with KVO
}];

开始动手

因为我之前安装了CocoaPods,所以我这次写的ReactiveCocoaDemo 是基于CocoaPods的.如果没有安装的可以童鞋,可以直接从github上下载ReactiveCocoa

前期工作:

1.打开xcode 创建一个工程,我命名的工程名为ReactiveCocoaDemo,

2.终端到工程路径下

cd ReactiveCocoaDemo/
pod search ReactiveCocoa

3.配置依赖文件

vi Podfile
    platform :ios,'5.0'
    pod 'ReactiveCocoa'
wq

4.下载文件

 pod install /update

5:打开“Build Phases” 选中相应的target, 添加 RAC 到 “Link Binary With Libraries”.加上libReactiveCocoa-iOS.a

如下图

6:在Header Search Paths 中添加$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include"

7:在 “Other Linker Flags” 添加 -ObjC

8:在ReactiveCocoaDemo-Prefix.pch 将RAC的头文件加进去

#import "ReactiveCocoa.h"

现在要实现如下功能

两个输入框 一个提示的Lable 一个按钮,
1.当两个输入框的内容相同时 提示文字显示“成功” 按钮可以点击
2.当任意一个输入框没有输入内容时 提示文字显示“请输入” 按钮不可点击
3.当输入框非空且两个输入内容不同时 提示“请重新输入” 按钮不可点击

下面是部分实现代码:

@weakify(self);
[[RACObserve(self, warningText)
  filter:^(NSString *newString) {
      self.resultLabel.text = newString;
      return YES;
//          return [newString hasPrefix:@"Success"];
  }]
 subscribeNext:^(NSString *newString) {
     @strongify(self);
     self.bt.enabled = [newString hasPrefix:@"Success"];
 }];


RAC(self,self.warningText) = [RACSignal combineLatest:@[
RACObserve(self,self.input.text),RACObserve(self, self.verifyInput.text)]
reduce:^(NSString *password, NSString *passwordConfirm)
{
    if ([passwordConfirm isEqualToString:password])
    {
        return @"Success";
    }
    else if([password length] == 0 || [passwordConfirm length] ==0 )
    {
        return @"Please Input";
    }
    else
    return @"Input Error";
}
  ];

对应关系如下图所示

学过C++ 的应该觉得这个很类似于Qt中的信号槽机制

需要说明的是因为RAC很大程度上是依赖于Block的.所以在RAC前面我们加上@weakify(my_variable) 避免循环引用,然后在每一个
RAC块中为了防止提前释放我们需要用@strongify(my_variable)来对对象进行持有.详情点击

运行效果图如下


W本站文章如果没有特殊说明,均为原创,转载请以链接方式注明本文地址:http://hufeng825.github.com/2013/10/13/ios31/
分享到:
评论

相关推荐

    基于Swift实现的PM2.5查询示例,基于CocoaPods构建

    基于CocoaPods构建。克隆后切换到Swift-PM25目录下,使用pod install安装依赖库。然后启动PM25.xcworkspace 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目...

    CocoaPods 安装与使用

    ### CocoaPods 安装与使用 #### CocoaPods 简介 CocoaPods 是一款用于管理 iOS 项目依赖的开源工具。它能够帮助开发者轻松地添加、更新和删除第三方库及框架,极大地简化了 iOS 开发过程中对依赖管理的需求。作为...

    cocoaPods使用

    - **CocoaPods / Xcodeproj**: 负责处理.xcodeproj和.xcworkspace文件,可创建和修改工程结构。 ### 安装CocoaPods 首先确保你的系统中安装了Ruby环境,Mac系统一般已预装。如果需要更新Ruby,可以在终端执行`gem ...

    CocoaPods构建配置1

    本文旨在详细介绍如何通过Usdk内置工具来构建并配置CocoaPods工程,特别是针对Project类型与Workspace类型的Xcode工程。 #### 二、构建类型介绍 ##### 2.1 Project与Workspace的区别 - **Project**:单个Xcode...

    cocoaPods教程

    ### CocoaPods教程 #### 一、CocoaPods简介 CocoaPods是一个非常流行的iOS及macOS项目的依赖管理工具。它可以帮助开发者轻松地在项目中集成第三方库或者框架,极大地简化了整个过程。 当你在开发iOS应用程序时,...

    最新的CocoaPods安装,无需镜像

    ### 最新的CocoaPods安装方法:无需镜像 在iOS开发过程中,CocoaPods作为最常用的依赖管理工具之一,极大地简化了第三方库及框架的集成与管理流程。本文将详细介绍一种最新的CocoaPods安装方法,该方法无需通过镜像...

    CocoaPods安装和使用教程

    ### CocoaPods安装和使用教程 #### 一、CocoaPods简介 CocoaPods是iOS开发领域中最为常用且知名的类库管理工具之一。随着iOS应用开发中对外部库的需求日益增加,开发者们经常面临着引入多个第三方开源类库的情况。...

    cocoapods的安装和使用

    ### CocoaPods的安装与使用详解 #### 一、CocoaPods简介 CocoaPods是一款用于管理iOS和macOS项目的依赖库工具。通过CocoaPods,开发者可以轻松地将第三方库集成到自己的项目中,从而简化了构建过程并提高了开发...

    cocoapods-xcode-plugin-master

    CocoaPods 是 iOS 和 macOS 开发中广泛使用的依赖管理工具,它可以帮助开发者轻松管理和集成第三方库。Xcode 插件则是在 Xcode 开发环境中扩展功能的一种方式,"cocoapods-xcode-plugin-master" 正是这样一个专门...

    IOS包管理CocoaPods 绿色版

    CocoaPods是OS X和IOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。

    cocoapods安装指导

    2. **检查Ruby环境:** CocoaPods基于Ruby语言开发,因此需要确保计算机上已安装Ruby,并且版本不低于2.2.2。 #### 三、安装步骤 ##### 第一步:安装RVM RVM (Ruby Version Manager) 是一个命令行工具,可以用来...

    cocoapods-packager, CocoaPods插件,它允许你从podspec生成 static 库.zip

    cocoapods-packager, CocoaPods插件,它允许你从podspec生成 static 库 CocoaPods打包器 允许你从podspec中生成框架或者 static 库的CocoaPods插件。这个插件适用于那些只需要通过CocoaPods发布 pod,还可以为不使用...

    cocoaPods安装使用指南

    cocoaPods安装使用指南,包括如何安装,升级及注意事项

    IOS CocoaPods的安装与使用教程

    CocoaPods基于Ruby编写,因此首先需要安装Ruby环境。以下是在Mac OS系统上安装Ruby的过程: 1. **更新Ruby版本**: - 执行命令:`sudo gem update --system` - 确保Ruby版本为3以上。 2. **安装RVM (Ruby ...

    IOS图片加载(SDWebImage+cocoaPods)

    本文将深入探讨如何使用SDWebImage库,结合CocoaPods进行集成和管理,以实现高效、流畅的图片加载。 SDWebImage是一款广泛应用于iOS平台的开源图片加载库,它支持从Web上异步加载图片,并具有缓存机制,能够显著...

    基于iOS的天气应用系统的设计与实现论文.doc

    在设计过程中,论文中介绍了使用的相关技术,包括CocoaPods的安装与设置、Xcode的使用、Objective-C语言的应用、ReactiveCocoa框架的使用等。 在SDK技术方面,论文中介绍了iOS开发中常用的SDK技术,包括Core Data、...

    CocoaPods安装使用

    1. **安装Ruby环境**:CocoaPods基于Ruby编写,因此首先需要确保系统中已安装Ruby。如果未安装,可以通过Homebrew等工具进行安装。 2. **设置Ruby源**:为了提高安装速度,可以将Ruby的gem源设置为国内的镜像服务器...

    swift-让自己的库支持cocoaPods

    CocoaPods则是Objective-C和Swift开发者常用的一个依赖管理工具,能够帮助开发者轻松管理和集成第三方库。本篇文章将详细介绍如何让你的Swift库支持CocoaPods,以便其他开发者可以方便地在他们的项目中使用你的代码...

    cocoapods 更新失败..txt

    cocoapods 更新失败 bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

    安装cocoapods.docx

    **安装CocoaPods的详细步骤** CocoaPods是一个管理iOS和macOS开发中依赖库的工具,它简化了第三方库的安装和更新过程。以下是在新电脑上安装CocoaPods的详细步骤,包括解决可能出现的问题: 1. **更新Ruby到最新...

Global site tag (gtag.js) - Google Analytics