同一个类(RandomClass)的instance1和instance2。
我想将instance1.string
设置为@"instance 1 string"
和instance2.string
设置为@"instance2 2 string"
,并以不同方式访问它们,但看起来就像我将instance2.string设置为instance1。字符串也会改变它的值。我正在使用sharedInstance方法;
类似的东西:
RandomClass *instance1 = [RandomClass sharedInstance];
instance1.string = @"instance 1 string";
RandomClass *instance2 = [RandomClass sharedInstance];
instance2.string = @"instance 2 string";
NSLog(@"%@", instance2.string); // wich results 'instance 2 string'
NSLog(@"%@", instance1.string); // wich results 'instance 2 string'
如您所见,instance2.string更改了instance1字符串值。
有没有办法分别创建不同的实例,将类对象作为唯一值处理(由它自己的实例访问)?
答案 0 :(得分:0)
instance1
和instance2
引用与[RandomClass sharedInstance]
相同的对象。如果您修改其中任何一项,则所有更改都将对原始sharedInstance
生效。
如果你想要两个不同的对象,你必须实例化两次(如果RandomClass
提供任何初始化方法):
RandomClass *instance1 = [[RandomClass alloc] init];
instance1.string = @"instance 1 string";
RandomClass *instance2 = [[RandomClass alloc] init];
instance2.string = @"instance 2 string";
NSLog(@"%@", instance1.string); // wich results 'instance 1 string'
NSLog(@"%@", instance2.string); // wich results 'instance 2 string'
(顺便说一下,RandomClass
看起来像Singleton,因此可能无法实例化多个对象。)
答案 1 :(得分:0)
您的示例无效,因为您没有同一个类的两个实例,您只有一个单例实例。请注意,[RandomClass sharedInstance]
始终返回相同的实例,您只有两个引用。
创建实例的常规方法是
[[RandomClass alloc] init...]
请不要在类和实例的上下文中使用术语thread
,这只会使问题更加混乱。
我相信你应该首先访问一些Obj-C教程或一些OOP教程。