Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何访问变量的值_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 如何访问变量的值

Iphone 如何访问变量的值,iphone,objective-c,ios,Iphone,Objective C,Ios,在我的.h文件中 @interface DemoApp : UIViewController { UITextView *textView; @private NSString *status; NSInteger *track1Len,*track2Len; } @property (nonatomic,retain) NSString *status; 在.m文件中 @synthesize status; - (void)onDecodeComp

在我的
.h
文件中

@interface DemoApp : UIViewController   {
    UITextView *textView;
@private

    NSString *status;

    NSInteger *track1Len,*track2Len;


}
@property (nonatomic,retain) NSString *status;
.m
文件中

    @synthesize status;
- (void)onDecodeCompleted:(NSString *)sts
{
   status=sts;
   NSLog(@"status is %@",status);

}

- (IBAction)processButton:(id)sender
{
   NSLog(@"status is %@",status);
   // here I am getting null value
}

我只是想在我的类文件中访问我的变量。在ondecodecompleted方法中,我得到作为参数传递的值,但在按下process按钮后,我得到的是空值。

请尝试:
self.status

- (void)onDecodeCompleted:(NSString *)sts
{
   self.status=sts;
   NSLog(@"status is %@",self.status);

}

- (IBAction)processButton:(id)sender
{
   NSLog(@"status is %@",self.status);
   // here I am getting null value
}
另外,由于您使用的是具有可变子类的
NSString
,因此应将其标记为
copy
,而不是
retain


@property(非原子,复制)NSString*状态

您丢失iVar的原因是,当您直接设置变量时,您没有获得该变量的所有权。
您需要执行
status=[sts copy]
状态=[sts保留]
获得所有权。
如果您不取得所有权,则
状态
将具有
sts
的寿命,这可能不是您想要的

直接访问iVar通常不是一个好主意,因为您需要记住每次都要进行正确的本地内存管理。

最佳做法是将
@属性
点语法一起使用。该属性将根据您将声明的设置器负责设置器的内存管理。

self.status=sts和读取属性…多年来一直没有必要声明支持IVAR,几个月前合成变量是可选的。您能在第一个函数中nslog sts吗,一开始可能是空的。