代码之家  ›  专栏  ›  技术社区  ›  StuR

Objective-C将变量传递给另一个IBAction

  •  0
  • StuR  · 技术社区  · 14 年前

    这很好:

    NSString *myVariable;
    
    - (IBAction) doFirstAction {
    myVariable = @"123456789";
    }
    
    - (IBAction) doSecondAction {
    NSLog(@"%@",myVariable);
    }
    

    但是,如果我这样做(用@“123456789”替换返回相同值的代码,即“123456789”),我就无法访问doSecondAction中的值。

    NSString *myVariable;
    
    - (IBAction) doFirstAction {
    myVariable = [imageNode getAttributeName:@"value"];
    }
    
    - (IBAction) doSecondAction {
    NSLog(@"%@",myVariable);
    }
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    你需要保留它

    myVariable = [[imageNode getAttributeName:@"value] retain];
    

    看见 also

        2
  •  0
  •   Joost Schuur    14 年前

    另一种方法是定义一个访问器方法来为您执行保留操作。因此在接口定义中:

    @property (retain) NSString *myVariable;
    

    在以后的实施中:

    @synthesize myVariable;
    

    现在Xcode为您生成getter和setter方法,它们将为您处理retain语句。但是,您现在需要使用点表示法,因为等号不会被重写,并且不会调用setter方法,除非您这样做:

    self.myVariable = [imageNode getAttributeName:@"value"];