我正在使用“WCSession”建立我的应用程序与Apple Watch之间的连接。我更喜欢单例方法。因此,我进行了一次共享 session :
static Shared_WCSession *sharedInstance = nil;
+(Shared_WCSession*)getSharedInstance {
@synchronized(self) {
// If the class variable holding the reference to the single ContentManager object is empty create it.
if(sharedInstance == nil) {
sharedInstance = [[Shared_WCSession alloc] init];
}
}
return sharedInstance;
}
然后在开始 session 中,我设置了该 session 的代表:
-(void)startSession {
if ([WCSession isSupported]) {
self.session = [WCSession defaultSession];
self.session.delegate = self;
[self.session activateSession];
LOG(@"WCSession is supported");
}
}
解除分配委托人的正确方法是什么?
根据apple's docs,我可以通过以下方法进行操作:
sessionDidBecomeInactive(_:)
sessionDidDeactivate(_:)
如果将委托设置为nil,会不会影响应用程序的性能?
最佳答案
WCSession.delegate不会泄漏:it is a weak reference
NS_CLASS_AVAILABLE_IOS(9.0)
@interface WCSession : NSObject
// ...
/** A delegate must exist before the session will allow sends. */
@property (nonatomic, weak, nullable) id <WCSessionDelegate> delegate;
// ...
如果您使用的是ARC并且您的委托仍保留在内存中,则不是因为WCSession.delegate