Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 方法调用-Cocoa/Obj-C_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c 方法调用-Cocoa/Obj-C

Objective c 方法调用-Cocoa/Obj-C,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我在学可可。。。 我试着用不同的方法去做,但我仍然是在黑暗中 我在实现中使用了以下方法: - (void)closeStream:(NSStream *)theStream { [theStream close]; [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; } 如何从@synthetize中的iAction调用它 - (IBAction

我在学可可。。。 我试着用不同的方法去做,但我仍然是在黑暗中

我在实现中使用了以下方法:

- (void)closeStream:(NSStream *)theStream {

    [theStream close];
    [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

}
如何从@synthetize中的iAction调用它

    - (IBAction)connect:(id)sender {

        if ([[connectNOK stringValue] isEqualToString:@"Disconnected"]) {

            [connectButton setTitle:@"Disconnect"];   
            NSString * hostFromField = [hostField stringValue];

            CFReadStreamRef readStream;
            CFWriteStreamRef writeStream;
            CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)hostFromField, [portField intValue], &readStream, &writeStream);
            inputStream = (NSInputStream *)readStream;
            outputStream = (NSOutputStream *)writeStream;

            [inputStream setDelegate:self];
            [outputStream setDelegate:self];

            [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
            [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

            [inputStream open];
            [outputStream open];

        } else {

            [connectButton setTitle:@"Connect"];

            // I want to call this method here   
        }
    }

如果
closeStream:
方法是在
connect:
方法相同的类中定义的,则必须使用:

[ self closeStream: someStream ];
其中
someStream
是您需要传递的
NSStream
对象

self
关键字引用类的当前实例。

如果您不知道这一点,或者不知道这意味着什么,我建议您在尝试编写任何代码之前,或者在编写代码之后,先看看

编辑:

我可以在您的代码中看到,您的
连接:
方法«切换»基于按钮标签的值进行连接

要知道,这不是一个很好的设计,但这里还有其他问题

如果需要,我想您应该关闭输入和输出流。
问题是,当第二次调用
connect
方法时,
inputStream
outputStream
变量就不再可以访问了

您可能需要将它们存储为,以便以后可以引用它们

再一次,您似乎真的应该先阅读一些关于编程原则的文档,以及一些面向对象的编程原则。

不要走得太快。知识是一切的关键,因此请阅读我前面提到的文档。

如果
closeStream:
方法是在同一类中定义的,而不是
connect:
方法,那么您必须使用:

[ self closeStream: someStream ];
其中
someStream
是您需要传递的
NSStream
对象

self
关键字引用类的当前实例。

如果您不知道这一点,或者不知道这意味着什么,我建议您在尝试编写任何代码之前,或者在编写代码之后,先看看

编辑:

我可以在您的代码中看到,您的
连接:
方法«切换»基于按钮标签的值进行连接

要知道,这不是一个很好的设计,但这里还有其他问题

如果需要,我想您应该关闭输入和输出流。
问题是,当第二次调用
connect
方法时,
inputStream
outputStream
变量就不再可以访问了

您可能需要将它们存储为,以便以后可以引用它们

再一次,您似乎真的应该先阅读一些关于编程原则的文档,以及一些面向对象的编程原则。

不要走得太快。知识是一切的关键,所以请阅读我前面提到的文档。

这是完整的语言规范。对于新手来说,最好从开始。你说得很对,谢谢:)也用你的链接更正了我的答案。这是完整的语言规范。对于新手,最好从开始。你完全正确,谢谢:)也用你的链接更正了我的答案。