Objective c 如何检查对象是否为零
我创建了一个类,它有几个NSString作为属性。如果我有一个此类的对象,那么我如何知道该对象是否为nil(即所有NSString属性都为nil) 我的班级看起来像这样Objective c 如何检查对象是否为零,objective-c,cocoa-touch,object,null,Objective C,Cocoa Touch,Object,Null,我创建了一个类,它有几个NSString作为属性。如果我有一个此类的对象,那么我如何知道该对象是否为nil(即所有NSString属性都为nil) 我的班级看起来像这样 // MyClass.h #import <Foundation/Foundation.h> @interface MyClass : NSObject <NSCoding> { NSString *string1; NSString *string2; } @property (nonato
// MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject <NSCoding> {
NSString *string1;
NSString *string2;
}
@property (nonatomic, retain) NSString *string1;
@property (nonatomic, retain) NSString *string2;
@end
为了检查所有属性是否为nil,我认为最好在类中为此创建一个特殊方法
如果我有一个此类的对象,那么我如何知道该对象是否为nil(即所有NSString属性都为nil)
对象不是nil,因为它的所有属性都是nil。但是,如果您确实想知道对象的两个字符串属性是否都为nil,则可以这样做:
-(BOOL) bothStringsAreNil
{
return [self string1] == nil && [self string2] == nil;
}
注:我所在的阵营不喜欢将指针视为布尔值,也就是说,我更喜欢上面提到的
-(BOOL) bothStringsAreNil
{
return ![self string1] && ![self string2];
}
功能相同。如果(!obj)在我的类中不起作用。我认为它只适用于NS classesif()检查值是false(0)还是true(!=0),所以它应该适用于任何类型-数字、c指针、obj-c对象。。。可能是您检查的对象没有初始化?@Vladimir:实例变量会自动设置为null/nil。@awakeFromNib:这个答案看起来正确,我认为您使用它的方式不对。你能告诉我们你试图检查nil的代码吗?@George,instances-是的,但检查邮件在自定义对象(不是iVar)上失败的原因之一是它没有初始化-awakeFromNib写道,如果(!obj)不起作用,你说什么不起作用?对象是否为nil,但代码不会执行?试着在调试模式下运行你的程序,看看myObject的实际值是多少。我的意思是,初始化的对象被视为非nil,即使我没有给对象中的字符串任何值。
-(BOOL) bothStringsAreNil
{
return [self string1] == nil && [self string2] == nil;
}
-(BOOL) bothStringsAreNil
{
return ![self string1] && ![self string2];
}