Objective c 目标C中实例变量的作用域

Objective c 目标C中实例变量的作用域,objective-c,ios4,Objective C,Ios4,这个问题听起来可能很幼稚,但这真的让我很困扰。 我试图通过从另一个视图控制器调用ViewController的实例方法来设置实例变量。基本上步骤如下 我在ViewController1中 初始化了ViewController2的对象 调用实例变量,为ViewController2的实例变量设置一些值 最后调用presentModalViewController来加载视图控制器 使用viewwillappease方法中的变量,但应用程序崩溃,调试时显示BAD_EXEC 我尝试过在实例中打印相同的方

这个问题听起来可能很幼稚,但这真的让我很困扰。 我试图通过从另一个视图控制器调用ViewController的实例方法来设置实例变量。基本上步骤如下

  • 我在ViewController1中
  • 初始化了ViewController2的对象
  • 调用实例变量,为ViewController2的实例变量设置一些值
  • 最后调用presentModalViewController来加载视图控制器
  • 使用viewwillappease方法中的变量,但应用程序崩溃,调试时显示BAD_EXEC
  • 我尝试过在实例中打印相同的方法,它在那里打印,但是在尝试使用方法之外的某个地方时崩溃了

    我还定义了属性并合成了变量

    我能解决的唯一问题是,我正在用methodos初始化变量……这是否限制了变量的范围

    任何形式的帮助都将不胜感激


    提前谢谢

    您很可能遇到内存管理错误,如果没有代码,我只能建议您确保熟悉Cocoa的内存管理系统:


    如果要创建实例变量的属性并合成getter和setter,则应该能够使用点表示法设置实例变量:

    viewController2.variable = foo;
    
    或者使用setter方法:

    [viewController2 setVariable:foo];
    

    您不应该试图直接访问实例变量。默认情况下,作用域设置为受保护,这意味着您只能通过类、其子类和类别扩展中的方法访问它。

    非常感谢我阅读了文档,犯了一个错误,在实例方法中初始化时没有保留对象