问题标签 [objective-c-protocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
61 浏览

objective-c - Swift & Objective C 协议:抛出函数声明

我在图书馆中有一个 Obj C 协议......

...我想在 Swift 3.1 中使用:

这在没有错误抛出的情况下工作正常,但是编译器在这里抱怨Candidate throws, but protocol does not allow it,我完全明白了。我将如何更改协议以便我可以抛出错误writeData

0 投票
1 回答
28 浏览

objective-c - 从协议中删除函数时,有什么方法可以得到编译器错误/警告?

现在假设我决定更改MyProtocol和删除该功能foooverride如果我不删除 foo 的实现(类似于C++ 中的等效关键字),是否有任何机制会给我一个编译器错误/警告?

0 投票
1 回答
36 浏览

objective-c - 将协议参数分配给对象成员

在我的头文件中,我定义了一个类成员:

后来我想使用这个函数分配这个变量:

但是这里xcode向我们显示了这个错误:“从不兼容的类型'id IAdmobTestSuite'分配给'id IAdmobTestSuite *';使用&获取地址”

不太明白这个错误,我怎样才能正确分配这个成员?

0 投票
0 回答
76 浏览

objective-c - 在objective-c协议前向声明中声明协议一致性

假设一个类已经定义如下OriginalObject.h

现在,在 中ExtendedObject.h,我想这样做:

尝试这样做会给我以下警告@property … delegate;ExtendedObject.h

看来编译器不知道ExtendedDelegate会符合OriginalDelegate​​ . 将完整的协议声明移到ExtendedObject接口上方ExtendedObject.h可以解决警告:

我想知道的是……有没有办法在前向声明中告诉编译器ExtendedDelegate符合OriginalDelegate(允许使用更像ExtendedObject.h上面第一个版本的东西)?


以下对这种前向声明的尝试似乎都不是有效的语法:

0 投票
1 回答
341 浏览

objective-c - 如何在快速扩展中实现目标 C 类的目标 C 委托函数

我正在尝试通过对所述类的快速扩展来符合 Objective-C 类上的 Objective-C 委托方法。问题是在下面的快速扩展中定义此函数的主体时,我没有提供自动完成选项。我不得不从Objective-C手动翻译它,但它仍然不起作用。我知道委托设置正确,因为当我直接在ObjectiveCConformingClass中提供委托函数体时它工作正常(并且在我编写函数时自动完成)。

我有一个像这样的快速课程(我想我需要解决的问题):

像这样扩展一个类:

符合委托的类:

代表:

所以总结一下:我需要在类的快速扩展中遵守这个委托,而不是实际的类。如果我直接在 Objective-C 类中执行它,它工作正常。任何想法为什么它不起作用?或者如果这甚至是可能的?

这里有一些相当相似的问题,它们要求不同的东西,所以对我没有帮助。(即不是重复的线程)

0 投票
2 回答
136 浏览

swift - 为什么@optional 修改的属性会变成不可变的?

我有一个包含如下属性的Objective-C协议:

PlayerController具有类型的属性id<Playback>

我尝试在Swift中编写以下代码,但出现错误

如果我@optionalPlayback 协议注释掉,那么它编译得很好。

这让我想知道为什么@optional会导致这个错误?