我是编程新手,所以这里的任何人都可以告诉我以下是否在Objective-C中有效。 感谢。
@interface MainViewController : UIViewController
{
id iTempStore;
}
@property (nonatomic, assign) id iTempStore;
// FirstViewController
@interface FirstViewController : UIViewController
{
MainViewController* pParent;
}
-(void) SomeFunction
{
m_pParent = [[[MainViewController]alloc]init];
NSString* pTest = [[[NSString alloc] initWithString:@"Test"]autorelease];
// Is this valid way to store an object ???
[m_pParent setITempStore: pTest];
// Check Value
NSString* pValue = [m_pParent iTempStore];
NSLog(@"Value is: %@", pValue);// Value is: Test
[m_pParent release];
}
答案 0 :(得分:0)
id可以保存对任何对象的引用,因此存储一个字符串就可以了,但是由于你使用iVar进行备份,你可能想要使用复制或保留而不是指定为你的存储类...你会使用复制如果它总是NSString或任何具有可变子类的类...但由于id不能指定为类型安全,你可以这样做:
@property(copy) id <NSCopying> iTempStore;
或
@propery(retain) id iTempStore;
答案 1 :(得分:0)
技术上还可以......但不是很好......
您的代码应如下所示:
@interface MainViewController : UIViewController
@property (nonatomic, assign) NSString* iTempStore;
// FirstViewController
@interface FirstViewController : UIViewController
{
MainViewController* pParent;
}
-(void) SomeFunction
{
m_pParent = [[MainViewController alloc]init];
NSString* pTest = [[[NSString stringWithString:@"Test"];
[m_pParent setITempStore: pTest];
NSString* pValue = [m_pParent iTempStore];
NSLog(@"Value is: %@", pValue);
}