Tag: Objective C

在Objective-C中,如何在运行时查找string常量?

我公司开发了一个广告SDK,用于调解其他广告networking。 在运行时,它使用NSClassFromString检查其他广告networking是否存在,并在这些类消息存在时发送它们。 这对Objective-C对象工作正常,但是我怎样才能在运行时加载string常量? 在这种情况下,我想检查一个只能通过string常量获得的SDK版本( extern NSString* VungleSDKVersion; )

为什么弱的NSString属性不能在iOS中发布?

我写了下面的示例代码来看看ARC如何工作 @property (nonatomic, weak) NSString *myString; @property (nonatomic, weak) NSObject *myObj; @end @implementation ViewController @synthesize myString = _myString; @synthesize myObj = _myObj; – (void) viewDidAppear:(BOOL)animated { NSLog(@"Appearing Obj: !%@!",self.myObj); NSLog(@"Appearing String: !%@!",self.myString); } – (void)viewDidLoad { self.myObj = [[NSObject alloc] init]; self.myString = [[NSString alloc] init]; NSLog(@"Loading Obj %@",self.myObj); NSLog(@"Loading String: !%@!",self.myString); } 然而令人惊讶的是我得到了这些结果 2012-06-19 […]

iOS临时文件夹位置

这个问题转到了Q&A,因为我在准备答案的时候find了答案。 没关系,我认为这是值得的: 我的应用程序刚刚被苹果拒绝,因为它在文档目录中存储临时文件或caching文件。 对。 他们的拒绝消息说“你的应用程序使用的临时文件只能存储在/tmp directory ”。 我想这是除了应用程序的文件夹中的文档和库 。 我现在试图在iPhone模拟器中debugging这个问题,当我使用NSTemporaryDirectory() ,我在XCodedebugging器中得到的值是/var/folders/yj/gnz1c7156c7d6d4fj429yms40000gn/T/tempzip.zip ,而不是/Users/me/Library/Application Support/iPhone Simulator/5.1/Applications/8F71AB72-598C-427A-A116-36833D3209F7/tmp/tempzip.zip 。 那么: NSTemporaryDirectory()具有使用iPhone Simulator的不同行为,并且是否可以在debugging时跟踪应用程序的临时目录?

限制用于App Store提交的某些iOS目标设备

由于运行在iPhone 4硬件上的问题,我的iTunes App Store提交反弹。 基本上,应用程序被编写为将所有联网活动放到后台线程,以便在等待服务器响应慢速(蜂窝)数据连接时,UI不会locking。 在iPad 2 + iPhone 4S这样的双核心设备上,这样做效果很好,但是在像iPad / iPhone 4这样的老式单核硬件上,响应速度慢,出错。 我在提交的内容中包含了这种效果的注释,但是我想知道是否有正式的方法来限制iTunes Connect中的目标设备? 干杯!

Xcode不会自动创build桥接头?

我导入了一个Obj-C文件到我的swift项目中,Xcode自动提示我按照预期创build了一个桥接头文件。 但是,我删除了两个文件(移动到垃圾)进行一些更改,但是当我尝试再次导入Obj-C文件时,提示不再出现。 是什么原因? 我甚至在另一个项目中testing了这个相同的场景,似乎一旦我删除Xcode的自动创build的桥接头,它不会再次提示提示。 为什么是这样?

iOS屏幕截图的一部分

我有一个应用程序,采取以下代码的UIImageView的屏幕截图: -(IBAction) screenShot: (id) sender{ UIGraphicsBeginImageContext(sshot.frame.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(viewImage,nil, nil, nil); } 这工作得很好,但我需要能够定位在哪里我截图截图基本上我只需要gradle只有三分之一的屏幕(中心部分)。 我试过使用 UIGraphicsBeginImageContext(CGSize 150,150); 但是发现每一件事都是从0,0坐标中得出的,有没有人有任何想法如何正确定位这个。

自ios7以来,indexPathForCell返回nil

我的应用程序在ios6.1下运行良好。 尝试过ios7模拟器,下面的部分不起作用: EditingCell *cell = (EditingCell*) [[textField superview] superview]; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; NSLog(@"the section is %d and row is %d", indexPath.section, indexPath.row); NSUInteger section = [indexPath section]; NSUInteger row = [indexPath row]; NSString *rowKey = [[keysForRows objectAtIndex: section] objectAtIndex: row]; 它总是: the section is 0 and row is 0 尽pipeselect了另一个部分/行。 有人有一个想法,为什么这不工作在ios7下?

表视图图像永远不会被释放

我正在对我的一个应用程序进行重大更新,并试图减less内存使用量,使其更清洁,更快。 我使用的仪器来分析应用程序,我正在看UIImage的分配,我约10时,应用程序启动(虽然一个是一个状态栏图标?不知道为什么包括)。 当我打开我的设置视图控制器(这是在iPad的分割视图控制器)它基本上与每个表视图单元格,这是一个很大的图像。 首次展示它添加了42个图像。 当我解雇这个视图控制器时,仍然有52个图像,现在应该只有10个。 如果我再次出示控制器,现在有91个图像。 这不断上升。 仪器没有说有泄漏,我不知道发生了什么。 每个单元格设置一个图像 cell.imageView.image = [UIImage imageNamed:@"Help-Icon"]; 我怎样才能找出为什么这些图像没有被释放? 编辑:我认为它现在释放的图像。 我从设置imageView图像直接更改为setImage:所以现在一个表单元格看起来像这样: cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; } cell.textLabel.text = NSLocalizedString(@"Homepage", @"Homepage"); UIImage *cellImage = [UIImage imageNamed:@"Homepage-Icon"]; [cell.imageView setImage:cellImage]; [MLThemeManager customizeTableViewCell:cell]; return cell; MLThemeManager是一个使用主题类将单元格的属性设置为主题的单例,如文本标签颜色,突出显示颜色,详细文本标签颜色和背景颜色。

如何在应用程序运行之间在本地检测iPhone用户的时钟提升?

休闲游戏中常见的一个漏洞就是人为地推动系统时钟在游戏中跳跃前进。 iOS设备上的应用程序如何检测此类用户时钟进度? 不得涉及networking通信 时钟提前时,不得假定应用程序处于打开状态(正在运行或暂停) 必须检测时钟前进,检测时钟回滚是不够的 理想情况下,该解决scheme可以防止重新启动,但这不是必需的。

如何在基于WebKit的应用程序中启用本地存储?

我有一个embeddedWebKit WebView的Cocoa / Objective-C应用程序。 我需要打开数据库支持和本地存储。 我知道这是可以做到的 – 我已经在Safari上工作了 – 但我找不到如何在我自己的应用程序中设置的例子。 我发现这个(未答复的)SO问题提供了一个例子,但是,正如原来的海报所提到的,这个问题不起作用。 事实上,他使用的方法(setDatabasesEnabled,setLocalStorageEnabled)没有在我的WebKit.framework(Xcode 3.2.5)中定义,虽然它们似乎存在,如果我自己定义它们。 任何人都可以提供一个如何启用本地数据库存储为基于WebKit的cocoa应用程序的例子吗? 非常感谢! 更新:我有一些工作…我被“数据库”与“本地存储”混淆,这显然是完全不同的东西。 以下是可用的代码: WebPreferences* prefs = [webView preferences]; [prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"]; [prefs setLocalStorageEnabled:YES]; 所以,这工作,但它需要私人方法_setLocalStorageDatabasePath,这意味着没有App Store的我。 所以我现在修改的问题是:有没有办法使这个工作, 而不使用私人方法? 我在这个答案中find了WebDatabaseDirectory首选项 ,它控制着数据库的位置 。 但是我找不到源中任何位置的本地存储的相应密钥。 或者有没有办法让我强制本地存储使用数据库,所以WebDatabaseDirectory的关键? 有任何想法吗?