在objective-c中,如何使错误名称的选择器生成编译时错误?
例如,说我有这个
@selector(some_misnamed_func)
Run Code Online (Sandbox Code Playgroud)
我的班级有这个成员
-(void)some_func
Run Code Online (Sandbox Code Playgroud)
我希望objective-c编译器告诉我它在编译时找不到该函数,而不是仅在运行该代码时生成运行时异常.
我有一个iPhone应用程序,我目前正在使用Storyboard在XCode 4.3中构建.我有一个"根"视图控制器,两个(2)seques到包含UIWebView的视图控制器.我希望能够识别segue(已经为两个segue设置了唯一标识符),因此我可以根据在"根"视图控制器中激活了哪个segue,将正确的内容"推送"到UIWebView.
我想我必须使用"prepareForSegue"方法,但不知道它会去哪里.我在哪里可以找到如何处理两个segues到同一个视图控制器?(我已经谷歌了,发现没有什么适合我的情况).
这是我正在使用的代码:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"helpSegue"]) {
NSLog(@"helpSegue");
}
else if ([segue.identifier isEqualToString:@"reportSegue"]) {
NSLog(@"reportSegue");
}
}
Run Code Online (Sandbox Code Playgroud) 我是iOS和故事板的新手,我需要一些关于设计新应用程序架构的可能方法的建议.我将在数据库中保存一些数据,我将有一个UIViewController页面,其中只有一些按钮,这些按钮具有某些类别的名称.当我们点击"全部"或点击"商家"时,它会根据该类别将数据显示到UITableViewController.
现在我对一部分感到困惑:
故事板是否允许从不同的按钮创建多个segue到同一个ViewController类?因此,如果不允许这样做,我是否必须创建6个不同的UITableViewController类来为6个类别创建segue?
如果允许从多个按钮到单个UIViewController的segue,我如何在storyboard中发送一个参数,让它意识到我点击了一个特定的按钮转到UIViewController.
我应该在UITableViewController中创建一个自定义构造函数,它接受一个参数,我将从其他按钮单击方法初始化该构造函数?那么它在类别方面显示结果?或者有没有一种方式故事板更容易做到这一点?
我是XCode IDE,Mac和IOS编程的新手.意味着我会在帮助和编辑之间交换很多东西.但是当使用Cmd+ Tab我不会在帮助和IDE之间交换,而是在其他打开的应用程序之间交换.
有谁知道在IDE和帮助之间切换的捷径?
我正在尝试在设备上调试Android应用.我希望局部变量显示在Eclipse的Debug透视图的Expressions视图中,但整个视图都是空的.
控制台中的最后一条消息是:Attempting to connect debugger to 'my.app.id' on port 8601这似乎有问题.我确实在设备上启用了调试,在清单中,我有清单中包含的SET_DEBUG_APP权限.
为什么我看不到我的局部变量?
在我的一个iOS项目中,我必须不断删除项目的派生数据,以便修复代码完成(代码意义,无论你想要什么称呼它).有时删除甚至不起作用......代码感仍然会被打破.知道这个项目有什么问题吗?
由于我很难理解的原因,我的应用程序已经崩溃了很多.它不是那么崩溃 - 它被外部"未知"过程杀死:
Processes
Name <UUID> rpages recent_max [reason] (state)
test-app <....> 167111 167111 [per-process-limit] (frontmost) (resume)
Run Code Online (Sandbox Code Playgroud)
我可以理解,如果我分配一块巨大的内存块,或者数十亿个较小的块,但我没有做任何令人发指的事情.使用Instruments进行性能分析告诉我,该应用程序仅使用大约8 MB,当我加载一些大型内容时,偶尔会出现高达13 MB左右.没有严重的泄漏,应用程序通常会很快被杀死.
一位同事开始使用Activity Monitory在模拟器中运行时检查应用程序的内存使用情况,并注意到当我们开始使用某个库时,内存从大约70 MB(我猜模拟器中的情况有点不同)飙升到800 MB以上.所以,我开始在模拟器中进行分析,而不是在设备上进行分析.分配工具继续报告应用程序使用8-ish MB,但VM Tracker告诉另一个故事:

所以...看起来VM Tracker能够看到一些重要的内存使用,而Allocations则不然.
为什么分配工具缺少此应用程序使用的99%的内存?
更新:为了回应nielsbot的问题,我仔细研究了VM Tracker的信息,发现在Allocations中我没有看到的内存的最大部分归因于Core Animation:

在我的应用我有一个UITabeView与UITextField每一个细胞里面秒.但是我在实现上一个/下一个按钮时遇到麻烦,使前一个/下一个文本字段UITableViewCell成为第一个响应者.
我已经将UITableViewCell类子类delegate化为在按下prev./next按钮时调用它的某个方法,并将单元格本身作为此方法的参数传递(因此我可以获取其索引路径来计算哪个是索引必须首先响应文本字段的单元格的路径)
在委托方法I的实现中:
-cellForRowAtIndexPath:表视图上的方法获取必须使textfield成为第一响应者的单元格问题是该-cellForRowAtIndexPath:方法仅在可见时返回单元格.因此,当单元格不可见时,它将返回nil,并且上述算法将无法工作,而当单元格在屏幕上时,它将正常工作.
这是我的上传代码.按钮,只要它MUInfoMateriaTableViewCell是我的子类,UITableViewCell并且它有一个textField返回其文本字段的属性:
- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
有没有办法"获得"一个不可见的单元格,所以我可以让它的文本字段成为第一个响应者?或者你能建议我另一种解决这个问题的算法吗?
我从事研发已经有一段时间了,我正在尝试创建一个单一平台,在其中我可以看到我的 iOS 应用程序的所有下载量。我已经阅读了文档,但我们查看应用程序统计信息的方式是通过登录然后下载报告。我喜欢以编程方式完成此操作,而不使用任何第三方扩展或包。就像 Android 一样,您可以在文档google cloud storage (API)中使用 google storage api 。但是有什么方法可以对 iOS 应用程序执行同样的操作吗?他们公开的唯一 API 是App store connect API,但它可以为您提供销售和趋势的结果。我不确定它是否还告诉您应用程序的下载数量。
请指出我正确的方向。我可能走错了路,但我在谷歌上搜索了很多,但在不使用第三方扩展的情况下找不到直接的方法。
ios ×5
iphone ×3
xcode ×3
debugging ×2
objective-c ×2
storyboard ×2
android ×1
app-store ×1
device ×1
eclipse ×1
editor ×1
instruments ×1
ios5 ×1
segue ×1
uitableview ×1