您可以使用self
對象來調用該方法,而不是創建自己的類的實例。
然後,當您在方法中引用self
時,您將使用相同的實例。
所以,你應該打電話給你的方法
[self runSomeMethod];
另外,如果你希望你的類以引用一個對象在任何時候,你可能要考慮創建類作爲一個單獨的類,即不管是什麼 - 你的課程總是會發出一個對象。
辛格爾頓WAY
要創建一個單獨的類,去你MyMainClass.h
並添加此屬性:
+ (MyMainClass *)singletonInstance;
然後在您的實現文件,MyMainClass.m
添加以下代碼:
//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