相关疑难解决方法(0)

如何禁用转发类编译器警告(未记录的类)

我目前正在编写一个使用UITabBarController的iPhone应用程序,该应用程序包含5个以上的Tab Bar项目.因此,会自动生成"更多"标签(例如,在YouTube应用中).我发现相应的视图控制器类是UIMoreListController,但我没有任何相应的.h文件.所以,我的代码看起来像这样:

@class UIMoreListController; // can't use #import since .h file is missing

@implementation SomeUINavigationControllerDelegate

- (void)navigationController:(UINavigationController *)navigationController
        willShowViewController:(UIViewController *)viewController
        animated:(BOOL)animated
{
     if ([viewController isKindOfClass:[UIMoreListController class]])
         ... // do something if "more" view is active
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力.但是,编译器一直在给我

警告:接收者'UIMoreListController'是一个转发类,对应的@interface可能不存在

是否有一种巧妙的方法来摆脱这种警告(只有这个特别的警告)?同样,我不能使用#import,因为没有.h文件可用.

compiler-construction xcode objective-c

2
推荐指数
1
解决办法
2659
查看次数

Objective-C类问题?

我的头脑即将爆发这种逻辑,任何人都可以帮忙吗?

A类#imports类B.A类调用B类中的方法A.

这非常有效

B类想要从方法A中调用的另一个方法将响应发送回A类.如果从类B中#import A类,它实际上是一个无限循环,整个事情崩溃了.

有没有办法正确地做到这一点,就像父类型的事情一样?

顺便说一下,我正在为iPhone开发.

编辑 当我从B类#import A类时,我得到这个编译器错误...

error: expected specifier-qualifier-list before 'StoreHoursCore'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

iphone methods class objective-c ios

1
推荐指数
1
解决办法
266
查看次数

标题#import与@class

可能重复:
@class与#import

在.h文件中,您可以使用添加要查看的类(不知道这是什么正确的术语)

#import "SomeClass.h"
Run Code Online (Sandbox Code Playgroud)

或者改为使用

@class SomeClass;
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法,但它们都有效.有什么不同?我应该使用其中一种方法而不是其他方法吗?什么是最佳做法?

iphone macos objective-c

1
推荐指数
1
解决办法
1329
查看次数

在接口文件中导入类和转发声明(@class)之间有什么区别?

可能重复:
@class vs. #import
Cocoa:在头文件中导入和在主文件中导入之间有什么区别?

我只是想知道在我们的接口文件中导入头文件和在我们的接口文件中使用@class之间有什么区别?我观察到如果我们在接口文件中导入头文件,我们可以直接创建该类的实例.与导入头文件相反,我们在接口文件中使用@class并在实现文件中导入头?有人可以对此有所了解吗?

objective-c ios

1
推荐指数
1
解决办法
620
查看次数

Objective-C @class/import最佳实践

我注意到有很多的Objective-C的实例将转发与@class声明类,那么实际导入与进口.m文件的类.我理解这被认为是最佳实践,如问题答案中所述:@class vs. #import

来自C++,这感觉倒退了.我通常会在新类头文件中包含所有需要的.h文件.这似乎是有用的,因为它会导致编译器生成一个警告,当两个类互相包含,在这一点上,我可以决定这是否是一件坏事或不然后用同样的Objective-C的风格和向前在头声明类和将它包含在.cpp文件中.

前向声明@class并在实现文件中导入有什么好处?在C++中转发声明类而不是包含头文件应该是最佳实践吗?或者从这些类似的术语开始考虑Objective-C和C++是错误的吗?

c++ objective-c

0
推荐指数
1
解决办法
1210
查看次数

标签 统计

objective-c ×5

ios ×2

iphone ×2

c++ ×1

class ×1

compiler-construction ×1

macos ×1

methods ×1

xcode ×1