3
\$\begingroup\$

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?

\$\endgroup\$
5
\$\begingroup\$

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()
    }
}
| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ I'd get rid of that redundant dataToTransfer local var. It doesn't contribute anything but visual clutter. \$\endgroup\$ – Alexander - Reinstate Monica Jan 23 '17 at 21:15
  • \$\begingroup\$ @Alexander agree. \$\endgroup\$ – shallowThought Jan 24 '17 at 3:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.