在我的函数中使用未声明的标识符

时间:2014-02-07 13:22:21

标签: ios iphone objective-c ipad

我正在使用未声明的标识符,即使我在.h中声明它并在.m中合成。

之前我遇到了另一个问题,但我在堆栈溢出中发布了一个问题,他们说我不应该对它们进行外设,当我对它们进行扩展时,代码给了我一个错误“ld:符号未找到架构i386 clang:错误:链接器命令失败,退出代码1(使用-v查看调用)“并知道我没有,它正在给我”使用未声明的标识符“,你可以看到

·H

#import <UIKit/UIKit.h>

BOOL OFrameIsHidden, XFrameIsHidden;
NSString *topOne, *topTwo, *topThree;
NSString *midOne, *midTwo, *midThree;
NSString *botOne, *botTwo, *botThree;

void hideAll(void);

@interface ViewController : UIViewController
void hideAll(void);
@property (weak, nonatomic) IBOutlet UIImageView *XFrame;
@property (weak, nonatomic) IBOutlet UIImageView *OFrame;
@property (weak, nonatomic) IBOutlet UIImageView *frame;
@property (weak, nonatomic) IBOutlet UILabel *X;
@property (weak, nonatomic) IBOutlet UILabel *O;
@property (weak, nonatomic) IBOutlet UILabel *WhoWon;



@property (weak, nonatomic) IBOutlet UIButton *oneOne;
@property (weak, nonatomic) IBOutlet UIButton *oneTwo;
@property (weak, nonatomic) IBOutlet UIButton *oneThree;
@property (weak, nonatomic) IBOutlet UIButton *twoOne;
@property (weak, nonatomic) IBOutlet UIButton *twoTwo;
@property (weak, nonatomic) IBOutlet UIButton *twoThree;
@property (weak, nonatomic) IBOutlet UIButton *threeOne;
@property (weak, nonatomic) IBOutlet UIButton *threeTwo;
@property (weak, nonatomic) IBOutlet UIButton *threeThree;

@end

的.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize XFrame, OFrame, frame, X, O, WhoWon;
@synthesize oneOne, oneTwo, oneThree;
@synthesize twoOne, twoTwo, twoThree;
@synthesize threeOne, threeTwo, threeThree;

void hideAll(void){

    [OFrame setHidden:YES];
    [XFrame setHidden:YES];
    [frame setHidden:YES];

    [X setHidden:YES];
    [O setHidden:YES];


    [oneOne setHidden:YES];
    [oneTwo setHidden:YES];
    [oneThree setHidden:YES];

    [oneOne setHidden:YES];
    [twoTwo setHidden:YES];
    [twoThree setHidden:YES];

    [threeOne setHidden:YES];
    [threeTwo setHidden:YES];
    [threeThree setHidden:YES];
}

为了您的信息,还有更多的IBAcions代码,但我不想这么做。

1 个答案:

答案 0 :(得分:2)

不要混用这样的功能和方法。它并没有真正帮助您,您所做的就是创建可见性问题。

方法的工作方式是传递一个隐藏参数,该参数可以访问self。您的所有@property定义都是实例变量,因此您需要访问self才能访问它们。函数(如hideAll)没有此访问权限,因此无法访问实例变量(它们不知道实例是什么)。

您通常也不希望在类定义之外定义变量。

将您的变量带入类或将它们移动到另一个更合适的类并使用代码的方法,而不是函数。