这是示例代码:
NSDictionary *myDictionary = [NSDictionary dictionary];
NSNumber *myNumber = [myDictionary valueForKey: @"MyNumber"];
NSLog(@"myNumber = %@", myNumber); // output myNumber = (null)
if (myNumber == nil)
NSLog(@"test 1 myNumber == nil");
if (myNumber == NULL)
NSLog(@"test 2 myNumber == NULL");
if ([myNumber isEqual:[NSNull null]])
NSLog(@"test 3 myNumber == [NSNull null]");
Run Code Online (Sandbox Code Playgroud)
我什么时候应该使用nil,NULL和[NSNull null]?
在NSArray是alloc和init之后,如果NSArray中没有添加任何内容,如何检查它是null还是空?
谢谢.
当我进入NULL或nil进入完成区时,iOS不会对我尖叫,animateWithDuration:animations:completion:但这是否意味着它没关系?或者打开一个空的更好^{ }?
我在我的一个方法中定义了一个int值:
int value = [self someMethodThatGetsAnINT];
后来我有一些"ifs"检查这个值.
我怎么表达:if(value == nil)?
当我尝试这样直观的代码编写时,我得到一个警告说:
语义问题:指针和整数之间的比较('int'和'void*')
我正在关注http://gabriel.github.com/gh-unit/docs/appledoc_include/guide_testing.html上的教程.问题是我的项目使用ARC而GHUnit没有.我管理过以前的错误,但现在我应该做桥接演员,我从未使用过,而且我迷路了.
NSString *string1 = @"a string";
GHAssertNotNULL(string1, nil); //error here
Run Code Online (Sandbox Code Playgroud)
错误描述:将Objective-C指针类型'NSString*'隐式转换为C指针类型'const void*'需要桥接转换.
任何帮助欢迎:)
可能重复:
Objective-C中的NULL与nil
Objective-C:NULL,nil和@""之间有什么区别?
我有一个简单的问题,我的目标变量中有NULL值.它只需输入if条件.我必须检查如果变量目标长度大于零且没有空值则输入条件.
而当我使用NULL或零比较?
谢谢

如果我将指针设置为nil或将指针指定给另一个对象,自动引用计数是否释放对象?
例如做类似的事情:
//in .h file
@interface CustomView : UIView
{
UIView *currentView;
}
// in .m file:
-(void)createView1
{
currentView = [[UIView alloc] init];
[self addSubview:currentView];
}
-(void)createView2
{
[currentView removeFromSuperview];
// does the former view get released by arc
// or does this leak?
currentView = [[UIView alloc] init];
[self addSubview:currentView];
}
Run Code Online (Sandbox Code Playgroud)
如果此代码泄漏,我将如何正确声明*currentView?或者我如何让ARC"释放"当前视图?谢谢!
我在我的应用程序中设置了两个计时器,每隔几秒重复一次.除非是时间使计时器无效,否则一切正常.当手机被锁定时,我想让这些计时器无效,然后在手机解锁时重新创建它们.
我使用通知来实现何时无效/创建计时器.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_didBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_willResigneActive:) name:UIApplicationWillResignActiveNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
这是notify_didBecomeActive方法包含的内容:
clockTicker = [[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(showActivity)
userInfo: nil
repeats: YES] retain];
alarmTicker = [[NSTimer scheduledTimerWithTimeInterval: CONST_ALARMTIMER
target: self
selector: @selector(checkAndLaunchAlarm)
userInfo: nil
repeats: YES] retain];
Run Code Online (Sandbox Code Playgroud)
这个notify_willResigneActive方法包含:
if (alarmTicker) {
[alarmTicker invalidate];
[alarmTicker release];
alarmTicker = NULL;
}
if (clockTicker) {
[clockTicker invalidate];
[clockTicker release];
clockTicker = NULL;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我在第二个计时器上调试这个无效时,我得到了错误.奇怪的是,如果我切换定时器的命令(比如首先使clockTicker失效)..我仍然在第二个定时器上得到错误.
我能做错什么?
谢谢,莱昂纳多
我怎么dealloc一个布尔值?
以下方式解除分配给我一个警告:指向整数转换的不兼容指针从'void*'分配给'BOOL'(又名'signed char')
- (void)dealloc {
self.booleanVar = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
也许我应该澄清一下,这是一个从NSObject继承的简单类.
我正在使用你在Cocoa Touch类中看到的self.var = nil模式.假设它是NSString*而应该在dealloc方法中使用self.var = nil还是[var release] ?我在这里有点困惑.
我有一个关于NSString内部的问题.我想检查一个字符串长度,基本上我想知道NSString每次都知道它的长度/计数/计数和缓存结果.
我应该存储它的长度并每次计算或调用长度方法吗?
为了测试一个字符串,我可以测试nil或者询问它的长度.
if (str != nil) {
// compute
}
if ([str length]) {
// compute
}
Run Code Online (Sandbox Code Playgroud)
哪一个最快?哪一个内存效率更高?
谢谢
我在从FMDB捕获空结果集时遇到问题.代码如下.我从数据库打开和关闭以及NSLog"1"获取NSLog,但是在If语句中没有一个!如果我在数据库中有数据很好,但我想在数据库为空时捕获并编辑结果.
[self openDatabase];
NSNumberFormatter *nfcurrency = [[NSNumberFormatter alloc]init];
[nfcurrency setNumberStyle:NSNumberFormatterCurrencyStyle];
[nfcurrency setLocale:[NSLocale currentLocale]];
FMResultSet *result = [[self getDatabase]executeQuery:@"SELECT BFNeeded FROM tblBets ORDER BY pk DESC LIMIT 1,1;"];
//FMResultSet *result = [[self getDatabase]executeQuery:@"SELECT BFNeeded FROM tblBets ORDER BY pk DESC LIMIT 1,1;"];
NSLog(@"1");
if (result == NULL) {
NSLog(@"Last BFNeeded Result = nil");
} else {
while ([result next]) {
NSLog(@"HERE");
NSString *lastBFNeeded = [nfcurrency stringFromNumber:[NSNumber numberWithDouble:[result doubleForColumn:@"BFNeeded"]]];
NSLog(@"lastBFNeeded=%@",lastBFNeeded);
}
}
NSLog(@"ClosingDB");
[self closeDatabase];
Run Code Online (Sandbox Code Playgroud)
获得第一次回复后继续:
我不能让hasAnotherRow按预期工作.我有这个代码:
FMResultSet *result = [[self getDatabase]executeQuery:@"SELECT …Run Code Online (Sandbox Code Playgroud) objective-c ×8
ios ×7
iphone ×6
cocoa-touch ×3
null ×3
cocoa ×2
ipad ×2
boolean ×1
dealloc ×1
fmdb ×1
gh-unit ×1
if-statement ×1
int ×1
nsnull ×1
nstimer ×1
performance ×1
xcode ×1