问题标签 [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.
objective-c - Swift & Objective C 协议:抛出函数声明
我在图书馆中有一个 Obj C 协议......
...我想在 Swift 3.1 中使用:
这在没有错误抛出的情况下工作正常,但是编译器在这里抱怨Candidate throws, but protocol does not allow it
,我完全明白了。我将如何更改协议以便我可以抛出错误writeData
?
objective-c - 从协议中删除函数时,有什么方法可以得到编译器错误/警告?
现在假设我决定更改MyProtocol
和删除该功能foo
。override
如果我不删除 foo 的实现(类似于C++ 中的等效关键字),是否有任何机制会给我一个编译器错误/警告?
objective-c - 将协议参数分配给对象成员
在我的头文件中,我定义了一个类成员:
后来我想使用这个函数分配这个变量:
但是这里xcode向我们显示了这个错误:“从不兼容的类型'id IAdmobTestSuite'分配给'id IAdmobTestSuite *';使用&获取地址”
不太明白这个错误,我怎样才能正确分配这个成员?
objective-c - 在objective-c协议前向声明中声明协议一致性
假设一个类已经定义如下OriginalObject.h
:
现在,在 中ExtendedObject.h
,我想这样做:
尝试这样做会给我以下警告@property … delegate;
:ExtendedObject.h
看来编译器不知道ExtendedDelegate
会符合OriginalDelegate
. 将完整的协议声明移到ExtendedObject
接口上方ExtendedObject.h
可以解决警告:
我想知道的是……有没有办法在前向声明中告诉编译器ExtendedDelegate
符合OriginalDelegate
(允许使用更像ExtendedObject.h
上面第一个版本的东西)?
以下对这种前向声明的尝试似乎都不是有效的语法:
objective-c - 如何在快速扩展中实现目标 C 类的目标 C 委托函数
我正在尝试通过对所述类的快速扩展来符合 Objective-C 类上的 Objective-C 委托方法。问题是在下面的快速扩展中定义此函数的主体时,我没有提供自动完成选项。我不得不从Objective-C手动翻译它,但它仍然不起作用。我知道委托设置正确,因为当我直接在ObjectiveCConformingClass中提供委托函数体时它工作正常(并且在我编写函数时自动完成)。
我有一个像这样的快速课程(我想我需要解决的问题):
像这样扩展一个类:
符合委托的类:
代表:
所以总结一下:我需要在类的快速扩展中遵守这个委托,而不是实际的类。如果我直接在 Objective-C 类中执行它,它工作正常。任何想法为什么它不起作用?或者如果这甚至是可能的?
这里有一些相当相似的问题,它们要求不同的东西,所以对我没有帮助。(即不是重复的线程)
swift - 为什么@optional 修改的属性会变成不可变的?
我有一个包含如下属性的Objective-C协议:
PlayerController
具有类型的属性id<Playback>
:
我尝试在Swift中编写以下代码,但出现错误:
如果我@optional
为Playback
协议注释掉,那么它编译得很好。
这让我想知道为什么@optional
会导致这个错误?