标签: protocols

找不到协议声明

我有两个view controllers AB,他们都拥有对方作为自己的代表.

当我除了在头文件的开头和#import另一个头文件中定义协议之外什么都没做的时候,我得到两个错误 -

找不到"BDelegate"的协议声明,它在Ah(我写的地方)中显示无法找到"ADelegate"的协议声明,这是在Bh(我写的地方)中显示的

在线查看,人们早些时候写过,包含头文件的循环包含可能会导致问题.他们建议使用#include相反,或@class声明像 -

@class A
Run Code Online (Sandbox Code Playgroud)

代替

#import A.h
Run Code Online (Sandbox Code Playgroud)

#import B.h

我几乎试过这些进口的每一种组合,而且@classes,#include但仍然无法摆脱警告.此外,在线解决方案建议移动#import.m文件,但这也没有帮助.部分原因是在线解决方案有点模糊 - 如果你可以分解它会很棒.

关于可以做些什么来解决这个问题的任何建议?


- BigViewController.h -

#import "BaseViewController.h"
#include "BaseViewController.h"

@class BigViewController;

@protocol BigViewControllerDelegate
-(void) BigViewController:(BigViewController *) bigView;
@end

@interface BigViewController : UIViewController <BaseViewControllerDelegate>
{    
     //delegate
     id <BigViewControllerDelegate> delegate;

ivars...    
}

@properties...
@end

--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

- BaseViewController.h -

#<UIKit/UIKit.h>

#import "BigViewController.h"
#include "BigViewController.h"

@class BigViewController;

@protocol …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch protocols objective-c

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

为什么我不能在Swift中使用let in protocol?

我对Swift中有关var的使用和关键字{get set}的协议有疑问.

来自Apple文档:

如果协议要求属性可获取和可设置,则不能通过常量存储属性或只读计算属性来满足该属性要求.如果协议只要求属性可以获取,那么任何类型的属性都可以满足要求,如果这对您自己的代码有用,则该属性也可以设置.

属性要求始终声明为变量属性,前缀为var关键字.Gettable和settable属性通过在类型声明后写入{get set}来指示,并且通过编写{get}来指示gettable属性.

我无法理解为什么我不能使用let.只有get的协议中的var不只是一个let

像这样的东西:

protocol someProtocol 
{
   var someProperty: String { get }
}
Run Code Online (Sandbox Code Playgroud)

它不会只是:

protocol someProtocol 
{
   let someProperty: String
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

protocols getter-setter ios swift swift-protocols

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

简单的串行点对点通信协议

我需要两个设备(PC和微控制器)之间的简单通信协议.PC必须向微软发送一些命令和参数.微必须传输一个字节数组(来自传感器的数据).

数据必须受到噪声保护(除了奇偶校验,我认为我还需要一些其他的数据校正方法).

有没有标准的解决方案呢?(我只需要一个想法,而不是完整的解决方案).

PS任何建议表示赞赏.PPS对不起任何语法错误,希望你理解.

编辑1.我还没有决定它是主/从协议还是双方都可以发起通信.PC必须知道微工作何时完成工作并且可以发送数据.如果数据准备就绪,它可以连续轮询微观,或者当作业完成时微观可以发送数据.我不知道哪个更好更简单.

编辑2. 硬件和物理层协议.由于PC中使用RS-232 C串行标准,我将使用异步通信.我将只使用RxD,TxD和GND信号.我无法使用额外的电线,因为微控制器AFAIK不支持它们.顺便说一下,我正在使用AVR ATmega128芯片.

所以我将使用固定波特率,8位数据,2个停止位而不进行奇偶校验(或使用?).

数据链路协议.这就是我的问题主要关注的问题.感谢您提出HDLC,PPPModbus协议.我会研究它.

embedded serial-port protocols

56
推荐指数
5
解决办法
7万
查看次数

检查是否已实现可选的协议方法

有谁知道检查是否已实施可选协议方法的最佳方法.

我试过这个:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )
Run Code Online (Sandbox Code Playgroud)

代表是:

id<MyProtocol> delegate;
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误,说respondsToSelector:该协议中找不到该功能!

iphone delegates protocols objective-c

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

协议和代表之间的区别?

a protocol和a有delegate什么区别?

和,

我们怎样才能声明variablesprotocol class

delegates protocols objective-c ios

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

Objective-C协议前向声明

ObjectProperties.h

@protocol ObjectProperties <NSObject>

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDate *date;
@property (assign, nonatomic) int64_t index;

@end
Run Code Online (Sandbox Code Playgroud)

ClassA.h

#import <Foundation/Foundation.h>

@protocol ObjectProperties;

@interface ClassA : NSObject <ObjectProperties>

- (void)specialSauce;

@end;
Run Code Online (Sandbox Code Playgroud)

ManagedClassA.h

#import <CoreData/CoreData.h>

@protocol ObjectProperties;

@interface ManagedClassA : NSManagedObject <ObjectProperties>

- (void)doSomething;

@end;
Run Code Online (Sandbox Code Playgroud)

从上面的代码示例中,我在.h文件中定义了一个协议,用于Core Data对象以及普通的'vanilla对象.似乎"噪音"使符合类#import协议在其标题中; 如上所示,在实现文件中转发声明协议和导入会更清晰.但是,当这样做时,Xcode会发出警告:

Cannot find protocol definition for 'ObjectProperties'

代码编译,主要是工作.我之所以说主要是因为Core Data试图动态创建标量属性的getter/setter有一些愚蠢,但我认为这可能是因为我遇到了边缘情况.

当然,最明显的解决方法是将协议头导入类头.

如果我的理解是正确的(我的知识是最近获得的,所以我完全有可能我错了),如果我将协议导入我的类头并对协议进行更改,那么导入我的所有后续文件必须重新编译类.

解决此类问题的正确方法是什么?

protocols objective-c

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

我可以在协议中使用init函数吗?

当我尝试以这种方式实现我的协议时:

protocol Serialization {
    func init(key keyValue: String, jsonValue: String)
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说:函数声明中的预期标识符.

为什么我收到此错误?

protocols initialization swift swift-protocols

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

如何在Windows中注册自定义URL协议?

如何在Windows中注册自定义协议,以便在单击电子邮件或网页中的链接时打开我的应用程序并将URL中的参数传递给它?

windows url protocols custom-url-protocol

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

有人可以解释LDAP吗?

我经常听到"我们可以使用LDAP加载员工信息吗?" 然而,标题"轻量级目录访问协议"让我认为它是一个协议而不是像Oracle或MSSQL这样的物理数据库管理系统.

那么有人可以向我解释一下LDAP是什么,它是如何使用的,以及它是如何工作的?LDAP只是用于从各种DBMS中提取数据的标准协议吗?在架构图中,LDAP是否只是数据库和应用程序服务器之间的箭头?

database protocols ldap

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

html - 没有http协议的链接

我们是否有理由在链接属性中包含http/ httpsprotocol href

如果不做就没关系了:

<a href="example.com">my site</a>
Run Code Online (Sandbox Code Playgroud)

html protocols hyperlink

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