【发布时间】:2015-05-25 05:51:55
【问题描述】:
我刚刚在Category 类中为NSString 类创建了一个Extension
#import "NSString+Name.h"
@interface NSString(Name)
@property (nonatomic, retain) NSString *var;
@end
但是当我尝试访问类别类中的私有变量时,应用程序崩溃并给出错误。
@implementation NSString (Name)
- (NSString*)newString{
[self setVar:@"Its a new string"]; // Crashes here
NSLog(@"name = %@",self.var);
return self.var;
}
@end
崩溃原因
无法识别的选择器发送到实例 0x1023641c8 2015-05-25 11:12:49.246 Tute[710:14433] *** 由于未捕获而终止应用程序 异常“NSInvalidArgumentException”,原因: '-[__NSCFConstantString setVar:]: 无法识别的选择器发送到 实例 0x1023641c8'
如果我能够在该变量中分配值,那么为什么它说无法识别的选择器
【问题讨论】:
-
你试过用
[self setvar:@"Its a new string"]; -
正如@Ghanshyam 在他的回答中提到的,您必须访问 _var = @"Its a new string";这将成功设置新字符串
-
@Kamarshad 我无法访问 _var 它只允许我访问 self.var
-
字符串不会被初始化,所以你不能给它赋值。
-
它已初始化,这就是我能够调用 newString 方法的原因。
标签: ios objective-c iphone nsstring