ViewDidLoad()中的调用方法

时间:2012-02-08 15:56:47

标签: iphone objective-c ios self

我在更新标签的关键事件上调用方法。

    [self updateFolderText];

当我在事件方法中执行此操作时,它可以工作,但是当我尝试在ViewDidLoad()中执行此操作时,我收到编译器错误。

- (void)viewDidLoad
{
    [super viewDidLoad];     
    [self updateFolderText];
}

我收到以下错误:

    error: Automatic Reference Counting Issue: Receiver type 'ViewController' 
for instance message does not declare a method with selector 'updateFolderText'
嗯......我想这一定是微不足道的......我是Objective-c的新手。谢谢。 :)

4 个答案:

答案 0 :(得分:4)

问题可能是因为您的方法updateFolderText定义在viewDidLoad下方。移动下面updateFolderText的代码,它应该有效。

或者,您可以在类中明确声明该方法。添加以上@implementation

@interface className()
-(void)yourMethod; //not sure how youve fully define updateFolderText
@end

或者,正如您所说,您也可以在头文件中定义它:

-(void)yourMethod; //not sure how youve fully define updateFolderText

答案 1 :(得分:2)

你需要确保在@end通常(对于公共函数)之前已经在.h视图控制器的.h中声明了函数updateFolderText,或者对于私有函数,你将声明它在.m的顶部用

@interface viewcontrollername()
-(void)updateFolderText;
@end

它可能在代码中的其他地方工作,因为你在上面的函数本身被称为

答案 2 :(得分:2)

确保在您的类的界面中声明您的方法。有两种选择。要将其声明为类的公共可访问方法,必须将其放在标题(.h)文件中。

宣言看起来像:

@interface myClass : UIViewController
- (void)updateFolderText;
@end

声明是一种只能在你的类中访问的方法(好吧,不是真的,但有效),然后你可以把它放在.m文件的顶部,在@implementation之前

@interface myClass ()
- (void)updateFolderText;
@end

就构建时间警告而言,第二种方法使该方法“私有”。请注意,实际上该类仍将在运行时响应此选择器。

答案 3 :(得分:1)

确保在.h文件或.m文件的私有界面中定义了-(void)updateFolderText。此外,如果-(void)updateFolderText在物理上位于.m文件中的viewDidLoad方法之上,它应该能够看到它。