通常,如果我有 Class 1 并且我想在其他地方使用它,我会写 Class1 *class1 = [[Class1 alloc] init]; 创建一个新实例。但是,如果我需要在另一个类中引用 Class1 中的变量并且不想创建新实例,而是使用现有实例,该怎么办。我该怎么做?如果我调用 init 并创建一个新实例,那么我会将所有变量重置为 0。我知道这是非常初级的,但也许这是我从未真正理解的东西。任何帮助表示赞赏。
问问题
328 次
2 回答
0
一旦你有了一个类的实例,你可以将它存储在一个变量中,将它传递给其他方法,并在那里使用它:
Class1 *object1 = [[Class1 alloc] init];
[someOtherObject doSomethingWith:object1];
...
@implementation SomeOtherClass
- (void)doSomethingWith:(Class1 *)anObject {
[anObject blah];
}
@end
附录
在其他语言中,您需要一个“类变量”。Objective-C 没有它们,但你可以使用静态变量来模拟它们:
static NSString *foo;
@implementation ClassWithSharedFoo
+ (NSString *)sharedFoo {
return foo;
}
+ (void)setSharedFoo:(NSString *)newFoo {
if(newFoo != foo) {
[foo release];
foo = [newFoo retain];
}
}
@end
请注意,此处定义的方法以 a+
而不是 a开头-
。这使它们成为类方法;也就是说,您将消息发送到类本身,而不是它的任何实例:
[ClassWithSharedFoo setSharedFoo:@"Foo"];
NSString *foo = [ClassWithSharedFoo sharedFoo];
在 C 中,static
变量就像一个全局变量,但它只在声明它的文件中可见;因此,它由 的所有实例共享ClassWithSharedFoo
,但不能在其他地方访问或修改,除非通过提供的类方法。
于 2010-09-15T21:24:46.873 回答
0
您需要为另一个对象提供对该 Class1 实例的引用。您可以通过设置实例变量、在 Interface Builder 中连接连接或将实例作为参数传递给另一个对象来实现此目的。
你说得对,这是非常基础的,但它也是非常基础的,所以你花时间思考它是件好事。您可以尝试通过一些 Objective-C 教程或示例代码来了解它是如何完成的。
于 2010-09-16T18:26:14.000 回答