2009-03-06 47 views
13

我目前正在尝试在UIPickerView.subviews中找到一个UIPickerTable ...所以我循环并做isKindOfClass:[UIPickerTable class] ....这工作..但因为UIPickerTable头没有暴露我得到一个警告,“接收者'UIPickerTable'是一个前向类和相应的@接口可能不存在'Receiver'ClassName'是一个转发类,相应的@interface可能不存在

为了甚至能够编译我做@class UIPickerTable,并明显它想让我#包括它。

我想知道是否有一种方法来解决看到此警告

TIA!

回答

5

我不认为你可以使用编译器选项来抑制该警告。你可以把它简单地创建该类自己的头文件中消失,包括:

@interface FacesViewController : NSObject { 
} 

我想这不用说,有你的应用程序依赖于的UIKit类的内部结构可能不是最好的战略。大概你有一个很好的理由在UIPicker里面瞎搞......

+3

为什么不能简单地用'NSClassFromString(@“UIPickerTable”)` – Joost 2010-04-04 14:52:33

+0

NSClassFromString可能是使用了正确的事情,但是当我得知的Objective-C,我们没有这些功能,所以我倾向于不考虑它们。 – 2010-04-05 05:42:25

0

在iPhone应用程序中使用私有API是拒绝来自AppStore的理由(谷歌的接近感应功能不能承受)。除非您计划仅使用该软件,否则不要使用私有API。如果在没有诉诸私有API的情况下无法做到您想要的,请在Apple的radar上提交一个错误。

+0

我基本上只是试图把标签放在UIPickerView的selectionIndicator之下,以匹配CountDownTimer的'小时''分钟'的外观会不会真的成为一个问题? – dizy 2009-03-07 04:27:49

0

我可能完全忽略了这一点,但我遇到了与AddressBook类似的东西。我已经包括像这样

#import <AddressBook/ABAddressBook.h> 

地址簿框架但是,当我想检查的类在peoplePickerView所选记录的..

NSArray *selected = [peoplePickerView selectedRecords]; 
for(id record in selected) 
{ 
if([record isKindOfClass:[ABPerson class]]) 
{ 
    return [record valueForKey:@"identityUniqueId"]; 
} 

} 

...我得到了警告,“接收器'ABPerson'是一个前向类,相应的@interface可能不存在“。然而,事实证明,这容易地固定,通过调整头文件:

#import <AddressBook/ABAddressBook.h> 
#import <AddressBook/ABPerson.h> 
@class ABPerson; 
1

导入类VS使用@class指令将解决此警告。请记住,@class不会告诉编译器什么“签名”方法/类具有,而只是说该类存在,所以不会出错。详细说明时,请使用导入“...”,以便它包含该类的标头/界面。

46

也许你有你的.h文件中@class UIPickerTable和你没有#import UIPickerTable.h您{} RootViewController的.m文件

0

当正确的标头不进口的某个时候,这种事情发生。例如,试图设置的NSManagedObjectContext时,你可能会得到通过不进口#import <CoreData/CoreData.h>

相关问题