标签: protocols

数据源和委托之间有什么区别?

我有一个与Cocoa框架设计模式相关的基本问题.

委托和数据源之间有什么区别?

它们都可以使用@protocols声明,但是一些类或框架正在使用delegate,而另一些正在使用datasource.

我可以理解的UI/NSTableViewdelegate对UI相关事件的响应,而datasource与数据完全相关.但是,我不知道Cocoa的UI类之外的任何数据源实现.

注意:

  • 我在这个问题中提到的代表并不总是与UI事件有关.
  • 数据源问题已得到解答.

cocoa delegates datasource protocols

41
推荐指数
5
解决办法
4万
查看次数

如何进行浏览器和Web服务器之间的通信?

任何人都可以解释在浏览器和Web服务器之间进行通信的方式吗?我想学习如何

  • GET,POST动词(以及其他)
  • 饼干
  • 会议
  • 查询字符串

在幕后工作.

browser protocols http

40
推荐指数
5
解决办法
10万
查看次数

SOAP和HTTP协议之间的区别?

SOAP和HTTP协议之间有什么区别.当我们说"SOAP over HTTP"时,这是什么意思.

soap protocols http

39
推荐指数
1
解决办法
5万
查看次数

嵌入式设备的良好串行通信协议/堆栈?

在为各种项目编写了几种不同的自定义串行协议之后,我开始对每次重新发明轮子感到沮丧.我不断继续为每个项目开发定制解决方案,而是一直在寻找更通用的解决方案.我想知道是否有人知道满足以下要求的串行协议(或更好的实现):

  • 支持多种设备.我们希望能够支持RS485总线.
  • 保证交货.某种确认机制,以及一些简单的错误检测(CRC16可能很好).
  • 不是主/从.理想情况下,从设备可以异步发送数据.这主要是出于审美原因,轮询每个奴隶的概念对我来说感觉不对.
  • OS独立性.理想情况下,它根本不依赖于抢占式多任务环境.如果我能得到其他东西,我愿意承认这一点.
  • ANSI C.我们需要能够为几种不同的体系结构编译它.

速度不是太大的问题,我们愿意放弃一些速度,以满足其他一些需求.但是,我们希望尽量减少所需资源的数量.

我即将开始实施带有搭载ACK的滑动窗口协议,而且没有选择性重复,但是想到也许有人可以省去我的麻烦.有谁知道我可以利用的现有项目?或者也许是更好的策略?

更新
我认真考虑过TCP/IP实现,但我真的希望能有更轻量级的东西.TCP/IP的许多功能对于我正在尝试的内容来说都是过度的.我愿意(不情愿地)接受我想要的功能可能不包含在较轻的协议中.

更新2
感谢您关于CAN的提示.我过去看过它,将来可能会用它.我真的很喜欢这个库来处理确认,缓冲,重试等.我想我更需要网络/传输层而不是数据链路/物理层.

更新3
所以听起来这个领域的最新技术是:

  • 精简的TCP/IP堆栈.可能从lwIPuIP开始.
  • 基于CAN的实现,它可能很大程度上依赖于CAN总线,因此在其他物理层上没有用处.像CAN Festival这样的东西可以帮助你.
  • HDLC或SDLC实现(如此).这可能就是我们要走的路线.

如果您遇到这个问题,请随时发布更多答案.

c embedded serial-port protocols firmware

38
推荐指数
3
解决办法
1万
查看次数

在Objective-C中定义协议的类别?

在Objective-C中,我可以向具有类别的现有类添加方法,例如

@interface NSString (MyCategory)
- (BOOL) startsWith: (NSString*) prefix;
@end
Run Code Online (Sandbox Code Playgroud)

是否也可以使用协议来执行此操作,即如果存在NSString协议,则类似于:

@interface <NSString> (MyCategory)
- (BOOL) startsWith: (NSString*) prefix;
@end
Run Code Online (Sandbox Code Playgroud)

我想这样做,因为我对NSObject(该类)有几个扩展,只使用公共NSObject方法,我希望这些扩展也能用于实现协议的对象.

再举一个例子,如果我想编写一个方法logDescription,将对象的描述打印到日志中,该怎么办:

- (void) logDescription {
    NSLog(@"%@", [self description]);
}
Run Code Online (Sandbox Code Playgroud)

我当然可以将此方法添加到NSObject,但是还有其他类不从NSObject继承,我也想要使用此方法,例如NSProxy.由于该方法仅使用协议的公共成员,因此最好将其添加到协议中.

编辑:Java 8现在在接口中使用"虚拟扩展方法":http://cr.openjdk.java.net/~briangoetz/lambda/Defender%20Methods%20v4.pdf.这正是我想在Objective-C中做的事情.我没有看到这个问题引起如此多的关注......

此致,Jochen

protocols objective-c categories

38
推荐指数
4
解决办法
2万
查看次数

目标C:给定一个类ID,我可以检查这个类是否实现了某个协议?或者有一个选择器?

我想将它用于对象工厂:给定一个字符串,创建一个Class,如果这个Class支持一个协议(使用Create()方法),那么分配该类并调用Create.

protocols class objective-c objectfactory

38
推荐指数
2
解决办法
2万
查看次数

二进制协议死了吗?

似乎以前有更多的二进制协议,因为时间非常慢(拨号).我一直在看到一切都被HTTP和SOAP/REST/XML所取代.

为什么是这样?

二进制协议真的死了还是不太受欢迎?为什么他们会死或不受欢迎?

binary client tcp protocols

38
推荐指数
4
解决办法
1万
查看次数

tableView:indexPathForCell返回nil

我正在使用该方法tableView:indexPathForCell来实现自定义委托,该委托可以UITableViewCell根据其UIWebView内部的框架大小动态调整大小.问题是当我试图找出特定单元格的indexPath是什么时tableView:indexPathForCell返回nil:

- (void)trialSummaryTableViewCell:(TrialSummaryTableViewCell *)cell shouldAssignHeight:(CGFloat)newHeight {
    NSIndexPath *indexPath = [tableV indexPathForCell:cell];
    NSLog(@"tableV: %@\ncell: %@\nindexPath: %@", tableV, cell, indexPath); //<-- 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这里,tableV不返回nil,单元格不返回nil,但indexPath返回nil.

我究竟做错了什么?

编辑:我-(void)trialSummaryTableViewCell从该tableView:cellForRowAtIndexPath:方法调用

iphone protocols uiwebview uitableview

38
推荐指数
3
解决办法
2万
查看次数

swift协议'weak'不能应用于非类类型

我有点困惑.protocol A : class { ... }和之间的区别是什么protocol A{ ... },我们应该在swift中使用哪一个?

PS:我们写这样的时候出错了

protocol A{ ... }

weak var delegate: A
Run Code Online (Sandbox Code Playgroud)

错误:'weak'不能应用于非类类型

protocols swift

38
推荐指数
3
解决办法
1万
查看次数

为什么OAuth设计为具有请求令牌和访问令牌?

在OAuth协议中,服务使用者将要求用户在服务提供者域中授权请求令牌,然后从服务提供者交换请求令牌获取访问令牌.

我想知道为什么OAuth被设计为在协议中有两个令牌.

为什么不在此过程中使用一个令牌呢?也就是说,用户将授权令牌,并且服务消费者将使用令牌从提供者检索信息.

protocols oauth token

37
推荐指数
1
解决办法
1万
查看次数