问题标签 [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 投票
1 回答
398 浏览

objective-c - Find Bar does not show up with WebView's Scroll View as the findBarContainer

I have a TextFinderController object that implements the NSTextFinderClient protocol, and a WebView's WebDynamicScrollBarsView (which is an NSScrollView) set as the NSTextFinder's findBarContainer. When I try to make the findBar visible in the ScrollView by setting findBarVisible to YES I am not observing a result. I have noticed that the ScrollView's findBarView is null even after setting the findBarContainer. I am using this code to get the ScrollView from the WebView. This is a Mac application and not an iOS application. How do I get the findBar to show up in the WebView?

#xA;
0 投票
0 回答
145 浏览

objective-c - NSTextFinderClient 的 contentViewAtIndex:effectiveCharacterRange 协议方法返回什么视图?

我已经实现了一个符合NSTextFinderClient协议的对象。的textFinderfind bar 容器是一个WebView's WebDynamicScrollBarsView,它是一个NSScrollView. 当我在其中显示 Find Bar 时,WebView它调用NSTextFinderClient'string: 的 s 实现,我在其中返回 webView 的 document.body.innerText。TextFinder当我在 Find Bar 中键入匹配项时,会在调用scrollRangeToVisiblecontentViewAtIndex:effectiveCharacterRange我的对象上找到匹配项,并且似乎已枚举NSTextFinderClient,但没有突出显示。

鉴于这种情况,我应该从我的 webview/scrollview 中为这两种协议方法返回什么,以便textFinder正确突出显示和滚动我的 webView?

请注意,这是一个 Mac 应用程序,我标记uiwebview是因为 mac 的 WebView 对象没有标记,并且 webview 标记与 Android 相关。

0 投票
5 回答
1982 浏览

objective-c - 使用@class 访问委托协议声明

我读过你应该尝试@class在你的头文件中使用,但是当你包含你试图使用的委托协议时,#import这不起作用。@class

我的视图.h

我想我忽略了一些东西,有没有办法@class在这种情况下开始工作,还是#import我唯一的选择?

编辑:一种解决方法当然是在 .m 文件而不是 .h 文件的私有接口部分声明您的#import MyCustomClass 和 MyCustomClassDelegate。

0 投票
3 回答
248 浏览

objective-c - 定义为`Class的变量是什么myClass 是什么意思?

我习惯于看到诸如id<NSCopying> myVaror之类的东西MyObject<NSCopying> myVar,我们在其中声明所讨论的变量可以愉快地NSCopying调用它的方法,而编译器不会抛出一个不稳定的问题。

但我最近发现一些代码定义了一个像这样的变量:

我想知道这实际上意味着什么,因为它似乎与前两个示例略有不同。似乎我们在说变量myClass可以愉快地接受来自的方法调用NSCopying——但是让类类型能够接受这些实例变量方法似乎没有多大意义。

我突然想到,类类型的变量本身就是技术对象,这可能让我或编译器(可能是我!)感到困惑。

所以我想我在问:

  1. Class<NSCopying> myClass;类似的东西实际上是什么意思
  2. Class<NSCopying> myClass;与类似的东西有什么不同id<NSCopying> myVar
  3. Class<NSCopying> myClass;在哪里可以有意义地使用类似的东西?

笔记:

  • 我只是NSCopying作为一个例子使用,并不是我的用例不可或缺的
  • 无论我在哪里提到,Class我的意思是 Obj-C 关键字Class,用于声明类型为Class. 我没有将其用作任何类类型的通用术语。
0 投票
1 回答
94 浏览

objective-c - Objective-C 协议可以有类别吗?

Objective-C 类可以实现一个协议。反过来是真的吗——Objective-C 协议可以有类别吗?

0 投票
1 回答
115 浏览

objective-c - 协议对象是否具有静态存储持续时间?

当您@protocol(SomeProtocol)作为参数传递给方法时,结果指针是否可以被认为具有静态存储持续时间?

现在考虑到协议是在编译时在 .h 文件中定义的,这是否意味着它的指针在程序的整个生命周期中都是相同的,并且在某种意义上可以安全地称为静态在运行时?

0 投票
2 回答
125 浏览

objective-c - 在 Objective-C 中使用工厂方法时检查协议一致性

我最近一直在学习如何在 Objective-C 中使用协议(使用 Apple 的官方指南),我一直无法理解在我看来不一致的地方。在文档中指出 -

通过在属性上指定所需的协议一致性,如果您尝试将属性设置为不符合协议的对象,即使基本属性类类型是通用的,也会收到编译器警告。

所以我通过创建一个名为“XYZFakeProtocol”的协议和一个不符合该协议的名为“XYZPerson”的类来测试这一点。然后我尝试初始化一个泛型类变量,该变量预计符合 XYZFakeProtocol 如下 -

正如预期的那样,XCode 标记了错误 -

<使用不兼容类型“XYZPerson *”的表达式初始化“__strong id XYZFakeProtocol>”

但是,当我做同样的事情而是使用工厂方法而不是手动分配和初始化实例时,不会出现错误。我使用的代码,工厂方法是 'person:' -

没有错误被标记,特别是有问题的是,当我调用协议中指定的方法时,也不会出现编译器错误,即使该方法实际上不在不符合标准的类中 - 这会导致我的程序崩溃。

那么这是 Xcode 的问题,还是使用工厂方法的预期和正确结果,如果是,是否可以向我解释这背后的原因,以便我了解如何最好地避免它编写一个真正的应用程序?

作为参考,如果我创建 XYZPerson 对象并将其分配给 XYZPerson 变量,然后将该变量分配给泛型类型变量,则 Xcode 会正确标记该类不符合协议的错误,而不管实例是否是使用创建的工厂方法或手动初始化 -

谢谢。

0 投票
3 回答
1027 浏览

ios - 我什么时候应该使用 conformsToProtocol 和 respondsToSelector 方法?

conformsToProtocol 和 respondsToSelector 方法有什么用?

0 投票
2 回答
756 浏览

swift - 替换@protocol() 迅速

我正在尝试NSXPCConnection快速使用。

所以,这一行:

可以用这一行代替:

而且,这一行:

可以用这一行代替:

现在我对使用正确的替代品感到困惑:<#Protocol#>在swift中,在objective c中我会使用: @protocol(StringModifing),但在swift中我一无所知:(

0 投票
2 回答
830 浏览

objective-c - 是否可以定义符合协议的 Class 类型的属性?

例如,我有MyFancyData协议。如何指定 MyFancyDataClass 属性只接受符合此协议的类。