【发布时间】:2014-09-12 10:13:27
【问题描述】:
在 Objective-c 中,我在 .h 文件中有一段代码:
typedef void(^SocketConnectionLost)();
typedef void(^SocketIOCallback)(id argsData);
@interface SocketConnection
@property (strong, nonatomic) SocketIO *socketIO;
@property (strong, nonatomic) NSMutableArray *socketConnectionLosts;
-(void)sendEventWithName:(NSString*)eventName
withData:(id)data
onConnectionLost:(SocketConnectionLost)connectionLost
onAnswer:(SocketIOCallback)answer;
@end
我在 .m 文件中有一个代码:
@implementation SocketConnection
- (void)init {
self.socketIO = [[SocketIO alloc] initWithDelegate:self];
[self.socketIO setReturnAllDataFromAck: YES];
[self.socketIO connectToHost:kSocketHost onPort:kSocketPort withParams:params];
}
- (void) socketIODidDisconnect:(SocketIO *)socket
disconnectedWithError:(NSError *)error {
for(ServerRequestConnectionLost connectionLost in self.socketConnectionLosts)
if(connectionLost)
connectionLost();
[self.socketConnectionLosts removeAllObjects];
}
-(void)sendEventWithName:(NSString*)eventName
withData:(id)data
onConnectionLost:(SocketConnectionLost)connectionLost
onAnswer:(SocketIOCallback)answer {
[self.socketConnectionLosts addObject:connectionLost];
[self.socketIO sendEvent:eventName withData:data andAcknowledge:^(id argsData) {
if(connectionLost)
[self.socketConnectionLosts removeObject:connectionLost];
if(answer)
answer(argsData);
}];
}
@end
请帮我在 Swift 中重现这段代码,我不明白如何使用 NSArray 上的 Array 创建、添加和删除 Swift 块
这就是我尝试在 Swift 中创建一些块的方式:
var someBlock: ()->()
var connectionLosts = NSMutableArray()
connectionLosts.append(someBlock)
编译器显示错误:类型“()->()”不确认协议“AnyObject”
然后我需要从数组中删除 someBlock,例如 obj-c 中的 [self.socketConnectionLosts removeObject:connectionLost],我不明白如何使用 Swift 数组来完成。
【问题讨论】: