根據您的設置,您有幾個選項。這裏有幾個:
1)添加到類的引用與功能(被叫方)在調用者的類屬性:
Caller.h
@interface Caller : SomeObject {
Callee *myCallee;
...
}
@property(nonatomic, retain) Callee *myCallee;
Caller.m
@synthesize myCallee;
-(void)someAction {
[myCallee doSomething];
}
東西都初始化放學後設置來電:
caller.myCallee = callee;
2)使用另一個通知事件,就像它看起來你已經知道該怎麼做。
3)使用的協議,如果你有一堆不同的類中的主叫方可能需要調用所有支持相同的方法:
DoesSomething.h
@protocol DoesSomething
-(void)doSomething;
@end
Callee.h
@interface Callee : NSObject<DoesSomething> { // NSObject or whatever you're using...
...
}
-(void)doSomething;
Caller.h
@interface Caller : SomeObject {
id<DoesSomething> *myCallee;
...
}
@property(nonatomic, retain) id<DoesSomething> *myCallee;
...然後根據示例1.
4)使用performSelector向類發送消息。
來電者。^ h
@interface Caller : NSObject {
SEL action;
id callee;
}
-(void)setupCallbackFor:(id)target action:(SEL)callback;
Caller.m
-(void)setupCallbackFor:(id)target action:(SEL)callback {
callee = target;
action = callback;
}
-(void)someAction {
if([callee respondsToSelector:action]) {
[callee performSelector:action];
}
我敢肯定還有其他的方法,有優點和缺點,每一種,但東西應該有適合您的需要和/或放棄你足以掃描文檔,以填補任何空白...
嗯,進出口仍然有點混亂,說如果我有一對類,second.h和second.m,並在這些宣告是一種方法是,可以說集的圖像視圖的α位零,你能否在其他類文件中使用該方法顯示第一組類文件(first.h + first.m)的具體示例。這將有助於讓我更清楚。無論如何感謝至今。 – Sam
這取決於你的場景,但正如你描述的類,那麼上面的每個場景的第一個將是來電者,第二個將是被調用者(抱歉,類名稱選擇不好 - 我的意思是被調用者?真的嗎?Yeesh。 ..)有時它可以幫助我複製並粘貼到編輯器中,然後搜索/替換,直到它有意義。 – jasondoucette
好吧,我現在可以更多地瞭解你的例子。我嘗試了你的第一個建議,通過在函數中添加一個對該類的引用,作爲調用者類中的一個屬性,但是它引用了那些對我來說沒有工作的類,使用你的代碼,(但將「SomeObject」更改爲「 UIView「)在'Callee'之前,我得到一個錯誤x2」期望說明符 - 限定符列表「,這讓我想知道是否被調用* myCallee;是引用一個類的正確方法。 – Sam