一个非常常见的通用问题,但似乎每个人都有自己对访问属于另一个类的变量的看法。我想要的是在class2中使用布尔变量来执行语句。我想要的例子是:
<?xml version="1.0" encoding="UTF-8" ?>
<settings>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.keyname>A1234567</gpg.keyname>
</properties>
</profile>
</profiles>
<servers>
<server>
<id>A1234567</id>
<passphrase>{pQ...lV}</passphrase>
</server>
</servers>
</settings>
if语句是class2似乎不起作用,因为我试图在class2中打印boolean值,它返回的所有值都是false。我想得到class1布尔变量的当前值,并在第2类中使用它而不进行初始化。
答案 0 :(得分:2)
查看您的问题,您似乎想要创建&#39; Class1
&#39;在另一个类中,获取要在那里显示的属性值。
在这种情况下,无论何时实例化&#39; Class1
&#39;,它都会带有初始值。这意味着价值将是&#39; null
&#39;当然。如果您想获得更改后的值,则需要创建&#39; Class1
&#39;作为Singleton类,其中,此类将在整个应用程序中实例化一次。意思是改变&#39; boolean1
&#39;的价值。在任何一个班级中,无论何时何地,都可以在另一个班级中获得相同的价值。
但同样,这完全取决于你想要如何使用整个事物。
Singleton示例:
// Class1.h
@interface Class1 : NSObject
/**
* A boolean property
*/
@property (nonatomic, strong) BOOL *boolean;
// Class1.m
@implementation Class1
// This is actual initialisation of the class instance.
+ (Class1 *)sharedInstance {
static Class1 *sharedInstance = nil; //static property, so that it can hold the changed value
// Check if the class instance is nil.
if (!sharedInstance) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// If nil, create the instance, using dispatch_once, so that this instance never be created again. So, if needed, app will use the existing instance.
sharedInstance = [[super allocWithZone:NULL] init];
// custom initialisation if needed
});
}
return sharedInstance;
}
// So that, if somebody uses alloc and init, a new instance not created always.
// Rather use existing instance
+ (id)allocWithZone:(NSZone *)zone {
return [self sharedInstance];
}
// So that, if somebody uses alloc and init, a new instance not created always.
// Rather use existing instance
- (id)copyWithZone:(NSZone *)zone {
return self;
}
@end
现在更新并使用该值。
//Class2.m
#import "Class1.h"
Class1 *myinstance = [[Class1 alloc] init];
myinstance.boolean = YES;
获取另一个类的值
//Class3.m
#import "Class1.h"
Class1 *myinstance = [[Class1 alloc] init];
if(myinstance.boolean == YES){
Do Something
}