Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何检查对象是否为零_Objective C_Cocoa Touch_Object_Null - Fatal编程技术网

Objective c 如何检查对象是否为零

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

我创建了一个类,它有几个NSString作为属性。如果我有一个此类的对象,那么我如何知道该对象是否为nil(即所有NSString属性都为nil)

我的班级看起来像这样

//  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];
}