Получив экземпляр класса, вы можете сохранить его в переменной, передать его другим методам и использовать там:
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
Обратите внимание, что определенные здесь методы начинаются с +
вместо -
. Это делает их методы класса ; то есть вы отправляете сообщение самому классу, а не его экземпляру:
[ClassWithSharedFoo setSharedFoo:@"Foo"];
NSString *foo = [ClassWithSharedFoo sharedFoo];
В C переменная static
похожа на глобальную переменную, но она видна только внутри файла, в котором она была объявлена; таким образом, он используется всеми экземплярами ClassWithSharedFoo
, но не может быть доступен или изменен в другом месте, кроме как с помощью предоставленных методов класса.