자신의 클래스 인스턴스를 만드는 대신 self
개체를 사용하여 해당 메서드를 호출 할 수 있습니다.
그런 다음 방법에서 self
을 참조하면 동일한 인스턴스가 사용됩니다. 당신이 당신의 클래스는 항상 하나 개의 객체를 참조 할 경우
그래서, 당신은 또한
[self runSomeMethod];
같은 방법을 호출해야합니다, 당신은 즉, 싱글 톤 클래스로 클래스를 생성하는 것이 좋습니다, 무엇이든간에 - 수업은 항상 하나의 객체를 발행합니다. 다음 코드를 추가, 구현 파일에 MyMainClass.m
을 다음
+ (MyMainClass *)singletonInstance;
:
을
SINGLETON WAY
싱글 톤 클래스를 만들려면 MyMainClass.h
로 이동이 속성을 추가
//Just below @implementation MyMainClass
static MyMainClass* _singletonInstance = nil;
+(MyMainClass*)singletonInstance
{
@synchronized([MyMainClass class])
{
if (!_singletonInstance)
_singletonInstance = [[self alloc] init];
return _singletonInstance;
}
return nil;
}
+(id)alloc
{
@synchronized([MyMainClass class])
{
NSAssert(_singletonInstance == nil, @"Attempted to allocate a second instance of a singleton.");
_singletonInstance = [super alloc];
return _singletonInstance;
}
return nil;
}
그게 전부입니다. 이제 MyMainClass
의 개체를 호출 할 때마다 [[MyMainClass singletonInstance] runSomeMethod]
을 사용하십시오. 또한 self
을 사용하면 동일한 개체를 참조합니다.
이미 인스턴스화 된 객체의 메소드를 호출해야하는 경우 인스턴스 변수 또는 속성에 저장하여 나중에 참조 할 수 있습니다. –
MyMainClass에 MyOtherClass의 객체가 있습니까? –
@AaronBrager 예, 기본적으로 제가 한 일입니다. – rick