Tag: Objective C

为什么要释放您已设置为nil的属性?

以下是Apple教程中视图控制器中的两种方法: – (void)viewDidUnload { self.eventsArray = nil; self.locationManager = nil; self.addButton = nil; } – (void)dealloc { [managedObjectContext release]; [eventsArray release]; [locationManager release]; [addButton release]; [super dealloc]; } dealloc方法不能缩短到以下几点吗? 如果没有,为什么不呢? – (void)dealloc { [managedObjectContext release]; [super dealloc]; }

CoreData:清除NSManagedObjectContext中的更改

我正在Application委托级实例化一个NSManagedObjectContext对象,并在我的所有UIViewController共享它。 这是我用于在我的一个View Controllers中访问它的代码: NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext; modelObj = (Model *) [NSEntityDescription insertNewObjectForEntityForName:@”Model” inManagedObjectContext:[appDelegate managedObjectContext]]; 现在在这个屏幕中,我有一个包含9行的UITableView ,每个单元格都有一个UITextField 。 当用户将值输入到文本字段中时,我将它们分配到modelObj 。 现在,我的用户可以选择取消并放弃所有更改或将其保存到磁盘。 我的保存代码工作正常。 但是当用户试图放弃更改时,我不知道该怎么做。 似乎没有[managedObjectContext discardChanges]方法将它们全部丢弃。 我可以想到几种方法来解决这个问题。 为每个控制器创建一个新的NSManagedObjectContext实例,而不是在整个应用程序中共享一个。 或者,我可以在我的代码中创建一堆NSString并在其中保存用户值并调用insertNewObjectForEntityForName:仅当用户单击save时。 哪种方式合适? 或者有没有办法让NSManagedObjectConext丢弃对它做出的所有更改? 谢谢, Teja公司。

在Interface Builder中使用id 作为文件所有者?

我有一个自定义的UITableViewCell ,我使用instantiateWithOwner:(id)owner options:(NSDictionary *)options从一个nib instantiateWithOwner:(id)owner options:(NSDictionary *)options 。 实例化nib时,我将其保存到我的视图控制器中定义的IBOutlet,该控制器在.xib文件中设置为文件的所有者。 一切都很好。 我现在遇到了在多个视图控制器中使用此自定义单元的需要。 我希望我可以定义一个协议(例如CustomCellOwner),多个视图控制器可以实现。 该协议将简单地定义用于在实例化时引用该单元的IBOutlet。 理想情况下,我想将“文件所有者”设置为: id 在Interface Builder中。 但是,Interface Builder似乎只允许您将文件所有者设置为已知类,而不是实现协议的id? 有没有办法做到这一点? 或者,一种更简单的方法来解决这个问题? 谢谢!

如何检测以编程方式生成的UIView的旋转

我有一个以编程方式创建的UIView : – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)]; if (self) { self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.5]; UIImageView* closeButton = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@”modal_close.png”]]; closeButton.frame = CGRectMake(self.frame.size.width*.89, self.frame.size.height*.09, closeButton.frame.size.width, closeButton.frame.size.height); UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width*.89, self.frame.size.height*.09,20, 20)]; [button addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside]; UIView* mainView = [[UIView alloc] initWithFrame:CGRectMake(self.frame.size.width*.1,self.frame.size.height*.1,self.frame.size.width*.8,self.frame.size.height*.8)]; mainView.backgroundColor = […]

如果需要,正确使用格式说明符最多可显示三位小数,否则为零小数?

我发现%g只在需要时显示小数。 如果数字是整数,则不添加尾随.000,这样就好了。 但是在例如1.12345的情况下,我希望它简短地回答1.123。 在1.000的情况下,我想只显示1,因为%g已经存在。 我试图在字符串中指定%。3g,但这不起作用。 如果有人有答案,我将不胜感激!

如何将字符串转换为浮点数?

可能重复: 在Objective-C中将字符串转换为float 我想将一个字符串转换为一个浮点数。 /* dict is an NSDictionary to load Preferences */ NSString *str = [dict objectForKey:@”key”]; 这是我得到的地方。 现在我想在一个浮点数中转换字符串值(在本例中为@”32.0f” ),它可以由我的应用程序处理。 我怎样才能做到这一点?

UINavigationController的addChildViewController和topViewController之间的相互作用

我有一个像模态视图控制器,我需要在我的其他视图控制器上方显示。 我没有使用常presentViewController:态控制器function( presentViewController:和朋友),因为我需要更好地控制进程。 相反,我使用视图控制器包含function( addChildViewController:方法组)。 包含function使代码非常简单。 当我需要呈现“模态”视图控制器时,我将它作为子项添加到视图控制器层次结构中,一切都按预期工作。 一个小问题是常规视图控制器包含在导航控制器中。 因此,我必须将模态控制器添加为导航控制器的子项,否则它将被导航栏和工具栏覆盖。 现在的问题是在导航控制器上调用addChildViewController:还将新控制器设置为topViewController ,就像使用常规pushViewController:方法推送控制器一样。 这意味着在显示模态控制器时,其下方的常规控制器不会接收外观和旋转回调。 这感觉就像一个错误,或者我错过了什么?

UIView animateWithDuration:duration:animations:completion:似乎有默认转换?

在我的程序中,我想创建一个以恒定速度移动的动画。 看起来动画开始缓慢,加速然后慢慢结束。 有没有办法改变这个?

“游戏中心无法识别此游戏”错误

我正在努力超越让Game Center集成工作的第一阶段。 我到目前为止: 我创建了一个新的,干净的应用程序,在app delegate中添加了GameKit头文件和基本的authenticateWithCompletionHandler:方法。 在模拟器中启动应用程序会显示登录对话框。 如果我通过登录对话框创建一个新帐户,那么该用户将获得身份validation并成功加载应用程序。 如果我第二次尝试使用该帐户登录,或者使用我使用模拟器的Game Center应用程序创建的帐户,登录将被拒绝,并显示“游戏中心无法识别此游戏”错误。 重置模拟器并通过XCode重新安装无效。 该应用程序是通过iTunes Connect为Game Center设置的,并且包标识符都是正确的。 任何人都可以建议我在哪里出错吗?

不兼容的指针类型Xcode

很抱歉对社区造成这样的负担,但我真的被困在这里了。 语义问题:不兼容的指针类型使用UITableViewCell *类型的表达式初始化NewCustomCell * UITableViewCell * static NSString *cellID = @”customCell”; NewCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];