我正在使用tableView:indexPathForCell方法来实现一个自定义的委托,可以dynamic调整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); //<– // … } 这里, tableV不返回nil ,cell不返回nil ,但indexPath返回nil 。 我究竟做错了什么? 编辑:我打电话-(void)trialSummaryTableViewCell从tableView:cellForRowAtIndexPath:方法
我想用这个对象工厂:给定一个string,创build一个类,如果这个类支持一个协议(与一个Create()方法)然后分配类,并调用创build。
在为不同的项目编写几个不同的自定义串行协议之后,我开始对重新发明轮子感到沮丧。 为了继续为每个项目开发定制的解决scheme,我一直在寻找更通用的解决scheme。 我想知道是否有人知道满足以下要求的串行协议(或更好的实现): 支持多种设备。 我们希望能够支持一个RS485总线。 保证交付。 某种确认机制,以及一些简单的错误检测(CRC16可能是好的)。 不是主/从。 理想情况下,从机可以asynchronous发送数据。 这主要是出于美学的原因,投票每个奴隶的概念不适合我。 OS独立性。 理想情况下,它不会依赖于抢先式的多任务处理环境。 我愿意承认这一点,如果我能得到其他的东西。 ANSI C我们需要能够编译几个不同的体系结构。 速度不是太大的问题,我们愿意放弃一些速度,以满足其他一些需求。 但是,我们希望尽量减less所需资源的数量。 我即将开始实施滑动窗口协议与piggybacked ACK并没有select性的重复,但认为也许有人可以救我这个麻烦。 有谁知道现有的项目,我可以利用? 或者更好的策略? UPDATE 我认真考虑过一个TCP / IP的实现,但真的希望有更轻量级的东西。 TCP / IP的许多function对于我正在尝试做的事情来说都是过度的。 我愿意接受(勉强),也许我想要的function不包括在较轻的协议中。 更新2 感谢CAN上的提示。 我曾经看过,未来可能会用到它。 我真的很喜欢图书馆处理确认,缓冲,重试等。 我想我更多的是寻找一个networking/传输层,而不是数据链/物理层。 更新3 所以这听起来像这个领域的艺术状态是: 裁减的TCP / IP堆栈。 可能从诸如lwIP或uIP之类的东西开始。 一个基于CAN的实现,它可能很大程度上依赖于CAN总线,所以它在其他物理层上将不会有用。 CAN节日可以帮助你。 一个HDLC或SDLC实现(就像这个一样)。 这可能是我们要采取的路线。 如果您遇到此问题,请随时发布更多的答案。
有谁知道使用.proto源文件生成Google Protobuf文档的好工具吗?
我有一个与Cocoa框架devise模式有关的基本问题。 委托和数据源有什么区别? 他们两个都可以使用@protocols声明,但是一些类或框架正在使用delegate ,还有一些正在使用datasource 。 从UI/NSTableView我可以理解的是delegate响应UI相关的事件,而datasource纯粹与数据相关。 但是,我不知道Cocoa UI类以外的任何数据源实现。 注意: 我在这个问题中提到的代表并不总是与UI事件有关。 数据源问题已被回答。
任何人都可以解释浏览器和Web服务器之间的通信是如何发生的吗? 我想学习如何 GET,POST动词(等等) cookies 会议 查询string 在幕后工作。
我正在尝试将generics和协议混合起来,而且我正在遇到xD 我在Android / Java项目中实现了一定的体系结构,我试图重写它以适应Swift / iOS项目。 但是我发现这个限制。 ProtocolA protocol ProtocolA { } ProtocolB protocol ProtocolB : ProtocolA { } ImplementProtocolA class ImplementProtocolA <P : ProtocolA> { let currentProtocol : P init(currentProtocol : P) { self.currentProtocol = currentProtocol } } ImplementProtocolB class ImplementProtocolB : ImplementProtocolA<ProtocolB> { } 所以,当我尝试将ProtocolB设置为实现ProtocolA的具体types时,我得到这个错误: 不支持使用“ProtocolB”作为符合协议“ProtocolA”的具体types 1这个“限制”有什么理由吗? 2是否有任何解决方法来实现这个? 3在某些时候会得到支持吗? – 更新 – 同样的问题的另一个变种,我想: […]
我的应用程序有一个协议详细视图控制器,说明他们必须有一个viewModel属性: protocol DetailViewController: class { var viewModel: ViewModel? {get set} } 我也有几个不同的类来实现协议: class FormViewController: UITableViewController, DetailViewController { // … } class MapViewController: UIViewController, DetailViewController { // … } 我的主视图控制器需要一个属性,可以设置任何实现DetailViewController协议的UIViewController子类。 不幸的是,我找不到任何文件如何做到这一点。 在Objective-C中,这将是微不足道的: @property (strong, nonatomic) UIViewController<DetailViewController>; 看来在Swift中没有可用的语法来执行此操作。 我最近来的是在我的类定义中声明一个generics: class MasterViewController<T where T:UIViewController, T:DetailViewController>: UITableViewController { var detailViewController: T? // … } 但后来我得到一个错误,说“类'MasterViewController'没有实现其超类所需的成员” 这看起来应该像在Objective-C中一样简单,但是在任何地方我都找不到任何可以解决的问题。
在Objective-C中,我可以将方法添加到具有类别的现有类中,例如 @interface NSString (MyCategory) – (BOOL) startsWith: (NSString*) prefix; @end 是否也可以用协议来做到这一点,即如果有一个NSString协议,如下所示: @interface <NSString> (MyCategory) – (BOOL) startsWith: (NSString*) prefix; @end 我想这样做,因为我有几个扩展到NSObject(类),只使用公共NSObject方法,我希望这些扩展也可以使用实现协议的对象。 举个更进一步的例子,如果我想编写一个方法logDescription,将对象的描述打印到日志中,该怎么办: – (void) logDescription { NSLog(@"%@", [self description]); } 我当然可以将此方法添加到NSObject,但也有其他类不从NSObjectinheritance,我也想要这种方法,例如NSProxy。 由于该方法只使用协议的公共成员,所以最好将其添加到协议中。 编辑:Java 8现在有这样的“虚拟扩展方法”的接口: http : //cr.openjdk.java.net/~briangoetz/lambda/Defender%20Methods%20v4.pdf 。 这正是我想在Objective-C中做的事情。 我没有看到这个问题引起了这么多的关注。 问候,乔臣
似乎以前有更多的二进制协议,因为互联网速度非常慢(拨号)。 我已经看到一切被HTTP和SOAP / REST / XML取代。 为什么是这样? 二进制协议真的死了,还是不太受欢迎? 他们为什么会死亡或不那么受欢迎?