问题标签 [objective-c-category]

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 投票
2 回答
221 浏览

ios - 这在 Objective-C 中意味着什么

我有一个名为 ManageAddressBook.m 的文件,该文件里面有两个 @implementation

第二个是什么意思?

0 投票
2 回答
216 浏览

objective-c - 类别标题导入不起作用

我有一个工作区,里面有两个项目。第一个项目本质上是一个测试和开发项目,在我担心将所有东西真正捆绑在一起之前,我已经开始工作了。第二个项目是将我所有单独开发的视图控制器放在一个故事板中。

在其中一个视图控制器上,我有一堆滑动手势和相当多的 UIView 动画调用,它们的格式很好地为可读性而设计,因此占用了大量空间。我选择将它们作为一个类别移出。

问题是编译器没有在主头文件中看到实例变量声明。

让我大吃一惊的是,我在第一个项目中就这样做了,而且一切正常。所以我仔细比较了我的第二个项目和第一个项目的内容,我没有发现任何差异。

以下是一些文件片段,可帮助演示我如何/在何处定义事物,然后是类别文件中尝试访问它们的代码片段:

GSBViewController.h

GSBViewController.m

GSBViewController+Swipe.h

GSBViewController+Swipe.m

编译器的抱怨是“使用未声明的标识符'roundsSectionView'”

如果我在向其中添加手势识别器的那行代码中单击使用 roundsSectionView,则弹出窗口正确地描述了它,如 GSBViewController.h 中所声明的那样

所以我很难过。

我可以在 Xcode 中做些什么(发帖时为 4.3.2 :-) 让我看看包含的文件是什么?或者是否需要一些非基于文件的东西来将一个类别与它正在扩充的类联系起来?我不记得以前有什么必要的。事实上,我为这个类别生成文件的方式是通过 Xcode 的 File -> New File... Objective-C Category 模板。然后我只是复制了旧的 ...+Swipe.h 和 ...+Swipe.m 文件的内容,并将它们粘贴到新项目中各自的文件中。

0 投票
1 回答
434 浏览

iphone - 扩展/类别而不是接口

所以我注意到在我的新 Xcode 项目中,默认情况下,我的 .m 文件中有一个类用于我的类。例如,我将在 .m 文件中有这个:

我想知道是否可以在 .m 文件的类别中声明我的变量和函数,或者我应该像以前一样在 .h 文件中这样做。基本上,关于类别的最佳实践是什么。

顺便说一句,我的问题与以下链接有关,但该链接并不能完全回答我的问题。

0 投票
2 回答
795 浏览

objective-c - 接口被声明了两次?- 目标-C

我是 Objective-C 的新手,并且正在查看许多示例来了解它。我遇到了这段代码:

在谷歌搜索时,我知道他们在接口名称之后指定了超类和委托(顺便说一下,我知道 zilch)。

但是为什么接口在这里声明了两次呢?

0 投票
2 回答
849 浏览

objective-c - 使用类别向 UIView 添加数据

我想扩展 iOS UIView 类,这样我就可以在我的 UIView 实例中存储一些我自己的数据和状态。我是 iOS 新手。我知道我无法将实例变量添加到类别中,所以大概我无法将新状态添加到我的 UIViews。

因此,我正在考虑创建一个 NSArray,其中我的每个 UIView 都有一个唯一标记,然后将其用作 NSArray 的索引,并且 NSArray 中的每个项目都包含有关该特定 UIView 的附加状态信息。这里的缺点是标签和 NSArray 的管理。如果我可以通过类别直接将状态添加到任何 UIView,那将更加直接。

谁能建议我向 UIViews 添加一些实例变量和状态的最佳方法?我正在使用很多 UIView 子类,因此并不想开始子类化 UIView。

谢谢。

0 投票
0 回答
672 浏览

ios - iOS自定义后退按钮,无需在每个视图控制器中调用方法

我想要一个更优雅的解决方案来更改应用程序导航栏的后退按钮。我看到的所有答案都只谈论自定义一个按钮,然后向每个视图控制器添加至少一行代码以显示新按钮。

我有一个类别,我可以在其中修改导航栏的背景和标题。它是 的一个类别UINavigationBarwillMoveToWindow:每次在导航控制器上推送新视图时,类别调用调用方法。

因此,创建新按钮的代码如下所示:

这里的问题是在这里self.navigationItem行不通。我不想让你对我尝试分类的所有事情感到厌烦,但该属性仅适用于视图控制器(我认为)?

您不必为上面的代码提供解决方案,也许您有更好的方法来自定义导航栏上的后退按钮,而不必在我拥有的每个 View Controller 类上编写代码。我只是讨厌重复,因为维护这样的代码很糟糕。

提前致谢。

0 投票
1 回答
120 浏览

objective-c - 类别中的核心文本泄漏

我为 NSAttributedString 找到了一个类别,它们返回包含给定宽度的属性字符串本身的矩形的高度。不幸的是, Instruments 表示其中存在泄漏。你能告诉我它在哪里吗?

0 投票
1 回答
1902 浏览

objective-c - 用一个类别声明符合objective-c协议并用另一个类别实现它

clang 报告未Test1(FooBar)实现fooor bar,尽管 foo 已在. 由于's存在于's 之上,clang 应该看到该实现并且不应该要求我在. 由于implements ,clang 不应该要求我在.Test1(Foo)barTest1Test1(Foo)@interfaceTest1(FooBar)Test1(Foo)fooTest1(FooBar)Test1barTest1(FooBar)

0 投票
1 回答
6138 浏览

objective-c - “找不到接口声明"

截图

我很难在我制作的课程上设置类别。根据我的阅读,Objective-C 允许您在任何类上创建一个类别,而不仅仅是闭源类。(老实说,任何其他方式都没有任何意义。)

当然,我可以将类别消息添加到实际的类文件中,但我想将它们分开(因为类别是可以非常普遍使用的类的一种不常见的特殊用途)。我想分享课程,但保持类别私有......无论如何。

我已经剥离了类别,只显示手头的问题。我(目前)在第一类消息上收到四个错误。我在那条线上收到的错误数量与它被引用的次数成正比,但它并不是均匀上升的。有谁知道这可能是什么原因造成的?

0 投票
3 回答
338 浏览

objective-c - Objective-C Category Return AppDelegate as property

I'm creating an Objective-C category on the UIViewController class. In my project, I want one singular and easy way to get the app delegate.

Here's what I'm doing

Should I define the property as weak? I think it would be bad to retain this guy as it would normally have retains on view controllers referenced within.