我有.h文件中定义了个属性。@interface RegLine: UIViewController<UITextFieldDelegate>
 {    
     NSString *mTradTag;
 }
 @property(nonatomic,copy)NSString *mTradTag;在.m文件中,附值:
mTradTag =[dic objectForKey:@"SuppId"];但是在退出界面时,报错: - (void)dealloc {
     [mTradTag release];//这里报错,错误提示为:isa=(class)<error:unknown Class>
     [super dealloc];
 }求解??
注:本人是用新手,采用导航器(UINavigationController)来做界面的

解决方案 »

  1.   

    self.mTradTag =[dic objectForKey:@"SuppId"];
      

  2.   


    顶,楼主的代码引用的是成员变量,并没有触发[dic objectForKey:@"SuppId"]返回对象的copy操作,只是简单地进行了指针引用。所以release会导致异常。但如果加上一楼的self,则使用的是属性,编译器会转变成对setMTradTag方法的使用,该方法是编译器自动生成的。由于定义属性是使用了copy,所以编译器所生成的g方法里自动对参数的copy操作,从而使得最后的release得以顺利执行。
        总结一条规律:如果定义了属性,则在代码中完全使用属性进行访问,不要直接使用成员变量——除了一个例外:init系列方法。