In a Swift project, I have a class should be used as a singleton
:
class NearFieldManager : NSObject{
static let shared = NearFieldManager()
var dataToTransfer:Any!
}
This class helps me communicate between several nearby devices and the dataToTransfer
is some information each device is advertising about itself.
What makes me wondering about this class is that each time I call it goes like this:
let manager = NearFieldManager.shared
shared.dataToTransfer = "some data"
First, I am creating a reference to the manager and line after it I set some value on its property. How can I improve this design?
1 Answer 1
Assuming the dataToTransfer
is always the same for a specific device, you can create this data in init()
class NearFieldManager {
static let shared = NearFieldManager()
private let dataToTransfer: Any
private init() { //private to forbid instantiation
self.dataToTransfer = methodToCreateDeviceData()
}
}
-
\$\begingroup\$ I'd get rid of that redundant
dataToTransfer
local var. It doesn't contribute anything but visual clutter. \$\endgroup\$Alexander– Alexander2017年01月23日 21:15:11 +00:00Commented Jan 23, 2017 at 21:15 -
\$\begingroup\$ @Alexander agree. \$\endgroup\$shallowThought– shallowThought2017年01月24日 03:17:24 +00:00Commented Jan 24, 2017 at 3:17