我建議您在此問題上使用Protocol/Delegate
。
你應該爲你的類聲明一個委託協議。委託協議和接口的類Foo的一個例子可能是這樣:
@protocol MyClassDelegate
//要求意味着,如果他們想使用委託他們 //必須實現它。 @required //您想要從另一個班級調用的方法。 - (void)taskComplete:(BOOL)complete; @end
@interface MyClass的:NSObject的 {// 我們不知道什麼樣的班會採用我們在 //編譯時間,這就是爲什麼這是一個id ID代表; }
@property(nonatomic,assign)id delegate;
- (void)taskComplete;
- (void)doSomeTask;
假設你有一個複雜的項目,並不希望創建大量的類之間 的聯繫,像這樣的這種情況下,代表團將是實現你的最佳途徑。這就像使用函數指針和回調函數,但通信很容易。有時間採用我們的協議,並在課堂上實際使用它。
myClass = [[MyClass alloc] init];
// Very important. If we don't let myClass know who the delegate
// is we'll never get the protocol methods called to us.
[myClass setDelegate:self];
在這裏你可以調用另一個類的方法。我希望這能幫到您。
您調用類方法的方法是什麼?當你聲明一個方法時,+之前的+(+(void)classMethod:(id)sender)意味着它是一個類方法,並且只能被[ClassOne classMethod:self]調用,並且 - 在它之前( - (void)instanceMethod:(id)sender)表示一個實例方法,這意味着它將由ClassOne調用* classOne = [[ClassOne alloc] init]; [classOne instanceMethod:self]; – Echihl
您是否分配或設置了該變量? –
您是否正在導入第二種情況下的'ClassOne.h'?將它導入ClassTwo.m的頂部應該使第一個版本也可以工作。 –