确保单例属性不能通过其他实例访问

时间:2016-03-05 17:19:14

标签: ios swift

我有一个单身人士课程:

COMMDLG_AFXCTXFUNC(BOOL ,PrintDlgW,(LPPRINTDLGW unnamed1),(unnamed1))
7824CD80  mov         edi,edi  
7824CD82  push        ebp  
7824CD83  mov         ebp,esp  
7824CD85  mov         eax,dword ptr [unnamed1]  
7824CD88  push        eax  
7824CD89  call        AfxGetModuleState (780F3320h)  
7824CD8E  mov         ecx,dword ptr [eax+94h]  
7824CD94  mov         ecx,dword ptr [ecx+4]  
7824CD97  call        CCommDlgWrapper::_PrintDlgW (7824CDB0h)  
7824CD9C  pop         ebp         //<======= it's stopped at this point.
7824CD9D  ret         4  

如何确保只能通过final class NotificationSingleton : NSObject { static let sharedInstance = NotificationSingleton() var aProperty: String! var anotherProperty: Int! } 访问aPropertyanotherProperty

2 个答案:

答案 0 :(得分:1)

您可以将初始化程序设为私有 因此,不能创建其他实例

private override init() {}

答案 1 :(得分:0)

您可以使用可用的初始化程序,以防止在设置NotificationSingleton后创建其他sharedInstance个实例。

我怀疑这种防御性编程实际上会让这个类在未来被其他开发人员使用,很难测试,并且可能有一个更清晰的解决方案,它不依赖于单例作为全局,但你去了