我是Objective-C的新手,所以我想做的事情可能是不可能的。我正在將一個大的C函數重構爲多個C函數和Obj-C方法。我可以從C函數調用Objective-C方法嗎?
這可能嗎?
下不會建立和抱怨
'自我' 未申報。
void serverCB(CFReadStreamRef stream, CFStreamEventType event, void *myPtr)
{
switch(event) {
case kCFStreamEventHasBytesAvailable:
[self readStreamData:stream];
break;
case kCFStreamEventErrorOccurred:
NSLog(@"A Read Stream Error Has Occurred!");
break;
case kCFStreamEventEndEncountered:
NSLog(@"A Read Stream Event End!");
break;
default:
break;
}
}
-(void) readStreamData: (CFReadStreamRef)stream
{
NSData *data = [[NSMutableData alloc] init]; //TODO: I have to flush this at some point..?
uint8_t buffer[1024];
unsigned int len = 0;
len = [(NSInputStream *)stream read:buffer maxLength:1024];
if(len > 0)
{
[data appendBytes:&buffer length:len];
}
NSString *serverText = [[NSString alloc] initWithData: data encoding:NSASCIIStringEncoding];
[data release]; // I got my string so I think I can delete this
[self processServerMessages:serverText];
}
}
中列出的第一個功能,「serverCB」我想在「readStreamData」消息發送給當前對象。所以我只能從c函數調用c函數?
謝謝!
如果是有意義的這樣做,特別是如果是有意義的命名參數「自我」,然後有一個很好的機會,有問題的功能確實應該什麼類的「自我」的方法屬於至。 – Caleb 2011-03-13 18:27:12
@Caleb ..好點。我應該讓這個功能屬於這個類,而不是綁定到一個特定的實例。 – Nick 2011-03-13 21:49:00