对此可能有一个非常简单的解决方案,但我无法使其正常工作。
我的Cocoa文件中有多个类。在其中一个类class1
中,我创建了一个我需要在另一个类class2
中使用的变量。有没有一种简单的方法可以在class2
中导入此变量?
答案 0 :(得分:14)
您可以将变量设为public,也可以将其变为属性。例如,将其公开:
@interface Class1
{
@public
int var;
}
// methods...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj->var = 3;
使它成为一个属性:
@interface Class1
{
int var; // @protected by default
}
@property (readwrite, nonatomic) int var;
// methods...
@end
@implementation Class1
@synthesize var;
...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj.var = 3; // implicitly calls [obj setVar:3]
int x = obj.var; // implicitly calls x = [obj var];
答案 1 :(得分:5)
您可以将class2中的变量公开为属性。如果class1具有对class2的引用,则class1可以看到该变量。但老实说,这听起来像是Objective-C和面向对象编程的初学者。我建议你阅读更多内容。
Here is a place开始使用Objective-C进行面向对象编程。
答案 2 :(得分:3)
尝试制作一个文件,其中包含需要在整个应用中访问的变量。
extern NSString *stringVariable;
@interface GlobalVariables
@property (retain, nonatomic) NSString *stringVariable;
@end
并在GlobalVariables.m文件中添加
#import "GlobalVariables.h"
@implements GlobalVariables
@synthesize stringVariable;
NSString *stringVariable;
@end
然后只要您将GlobalVariables.h导入到您需要访问该变量的任何.m文件中,您就可以在整个程序中的任何位置分配和访问。
编辑
我上面给出的答案与现在的方式不同。 这更像是
@interface MyClass
@property (nonatomic, strong) NSString *myVariable;
@end
然后在.m文件中
@implementation MyClass
@sythesize = myVariable = _myVariable; // Not that we need to do this anymore
@end
然后在某个方法的另一个课程中我会有
// .....
MyClass *myClass = [[MyClass alloc] init];
[myClass setMyVariable:@"My String to go in my variable"];
// .....
答案 3 :(得分:1)
在“XCode”中,您需要进行导入,通过将其声明为属性来创建对象,然后使用“object.variable”语法。文件“Class2.m”将以下列方式显示:
#import Class2.h
#import Class1.h;
@interface Class2 ()
...
@property (nonatomic, strong) Class1 *class1;
...
@end
@implementation Class2
//accessing the variable from balloon.h
...class1.variableFromClass1...;
...
@end
谢谢! : - )