小编Jas*_*Lee的帖子

如何在Xcode中的框架中进行调试?

我有两个项目,一个是networkLib登录和一些其他网络功能,另一个是usingLibDemo.所以我有两个项目的所有源代码.

networkLib项目输出一个名为的框架myNetKit.framework,供其使用usingLibDemo.

在此输入图像描述

现在我成功使用myNetKit.framework登录,但有时崩溃,可能在main()没有堆栈信息,但有时Xcode给我如下的堆栈信息:

在此输入图像描述

所以我知道崩溃的地方:

在此输入图像描述

但是Utils.m没有暴露,Xcode如何获取堆栈信息和崩溃线,并最终为我打开源文件?因为我的磁盘中有源代码?

如果是这样,myNetKit.framework当它没有崩溃时,如何逐步调试?

非常感谢任何提示.

iphone xcode objective-c ios

13
推荐指数
5
解决办法
2万
查看次数

iPhone:HOWTO用平移手势移动状态栏

像Instagram - EXPLORE Tab一样,当我滚动内容时,状态栏也会移动.

总是称为FullScreenScroll,就像这里一样,当用户滚动tableView时,NavigationBar&TabBar会滚动显示或隐藏在同一时间.

我的问题是,不仅是NavigationBar和TabBar,我还想让StatusBar跟随手指移动.

最后,它真的是全屏.

在此输入图像描述

在此输入图像描述

在此输入图像描述

objective-c ios uistatusbar instagram

11
推荐指数
2
解决办法
3362
查看次数

始终为嵌入式二进制签名证书签署'Ad Hoc Code'

我有两个目标,主要目标和扩展目标.现在,当我尝试存档应用程序时,Xcode失败并出现以下错误:

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.

        Embedded Binary Signing Certificate:    - (Ad Hoc Code Signed)
        Parent App Signing Certificate:     iPhone Distribution: ***. (EAA28CVMQM)
Run Code Online (Sandbox Code Playgroud)

所以我Build Settings - Code Signing一次又一次检查确保Embedded binary is signed with the same certificate as the parent app,

在此输入图像描述

在此输入图像描述

或者如下设置:

在此输入图像描述

他们都失败了同样的原因.无论我如何更改代码签名设置,Embedded Binary Signing Certificate总是如此(Ad Hoc Code Signed).

在这篇文章之前,我已经阅读了这些链接:

Xcode6:嵌入式二进制文件未使用与父应用程序相同的证书进行签名

嵌入式二进制文件没有使用与父应用程序相同的证书进行签名,但它们是相同的

http://aplus.rs/2014/embedded-binary-is-not-signed-with-the-same-certificate-as-the-parent-app/ …

xcode code-signing ios provisioning-profile ios-extensions

11
推荐指数
3
解决办法
5713
查看次数

从钥匙串中读取结果为errSecItemNotFound 25300

我使用钥匙串存储用户名和密码,有时当我试图获取用户名的密码时,它告诉我errSecItemNotFound.

我保持密码始终存在于钥匙串中,为什么找不到密码呢?

谢谢.

keychain ios

8
推荐指数
1
解决办法
3974
查看次数

HOWTO如何附加到iPhone上发布的应用程序?不是调试版本

我试图使用Xcode附加到调试应用程序:产品 - >附加到进程,它的工作原理.

但是当我试图连接到从App Store安装的应用程序时,Xcode首先说等待应用程序启动,当我在iPhone上启动应用程序时,Xcode刚刚在我的iPhone上运行了应用程序 ......没别的.

我的问题是我在App Store上发布的app有一个bug,我想附加到它来调试.

非常感谢.

因为(@Kendall Helmstetter Gelner):

这个bug很难跟踪,我有一个iPhone满足它.

iphone xcode ios

7
推荐指数
2
解决办法
4136
查看次数

在reloadRowsAtIndexPaths之后不调用cellForRowAtIndexPath

正如Apple Doc所说,

重新加载行会导致表视图向其数据源询问该行的新单元格.

我将UITableView与NSFetchedResultsController结合使用:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
{
    if (self.tableView.isEditing) 
    {
        [self.tableView setEditing:NO animated:YES];
    }
    [self.tableView beginUpdates];
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
    [self.tableView endUpdates];

    [self updateTabItemBadge];
    [self.noDataView setHidden:![self isNoData]];

    WXINFO(@"controllerDidChangeContent");
}
Run Code Online (Sandbox Code Playgroud)

在上述两个函数之间,我重新加载目标单元格:

在此输入图像描述

    case NSFetchedResultsChangeUpdate: {
        if (indexPath) {
            [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
        }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我在Line1563设置了一个断点,检查reloadRowsAtIndexPaths是否已经调用了,但之后- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath没有被调用.

所以,我的手机无法更新.

有人可以告诉我为什么?谢谢.

iphone core-data objective-c uitableview ios

6
推荐指数
1
解决办法
4197
查看次数

处理iOS键盘上的标记文本

根据文件,

标记文本是多级文本输入的一部分,表示用户尚未确认的临时插入文本.它以独特的方式设计.标记文本的范围始终包含一系列选定文本,可能是一系列字符或插入符号.

管理键盘一章中,图5-2显示了标记文本的内容:

在此输入图像描述

给定第4和第6张图像,键盘上的顶栏显示标记文本,如"修","修改","修身"等.

我很困惑的是HOWTO:

  • 检测用户点击标记的文本.它是替换所选文本,或者只是插入标记文本.
  • 在栏上显示自定义文字.例如,[textView showMarkedText:@"hello" atIndex:0].

谢谢.

objective-c uitextview uitextviewdelegate ios uitextinput

6
推荐指数
1
解决办法
1135
查看次数

iOS,减少图标徽章编号

我用

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1];
Run Code Online (Sandbox Code Playgroud)

减少图标徽章计数,但实际上它已被清除.当我按下主页按钮时,徽章计数不存在.

但是,如果我尝试这样的固定值

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:4];
Run Code Online (Sandbox Code Playgroud)

,徽章数量与预期一致.

所以,问题是:为什么

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1];
Run Code Online (Sandbox Code Playgroud)

不工作?

icons badge ios

5
推荐指数
1
解决办法
1万
查看次数

有多少种方法可以通过编程方式计算iOS应用程序的FPS(每秒帧数)?

自从我们谈论以来programmatically,仪器不在我的考虑之中.

一些参考预先列出:

1.使用CADisplayLink

根据文件,

duration属性提供帧之间的时间量.您可以在应用程序中使用此值来计算显示的帧速率...

所以在我的演示项目中,我将一个displayLink添加到mainRunLoop,用于UITrackingRunLoopMode:

self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(screenDidUpdated)];
[self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode];
Run Code Online (Sandbox Code Playgroud)

并用于duration计算FPS.但出乎我的意料,duration总是0.016667(~FPS 60)无论tableView滚动顺畅与否.

我如何使tableView滞后是添加一行- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath:

NSData *data = [NSData dataWithContentsOfURL:url];
Run Code Online (Sandbox Code Playgroud)

然后我转向displayLink.timestamp,它起作用了.

2.观察drawRect:

我的第二个想法是观察drawRect:,我想当tableView滚动时,drawRect:它将被逐帧调用,然后我可以根据drawRect:调用之间的时间差来计算FPS .

但它失败了,导致drawRect:只被召唤一次(而细胞多次).这种方式类似Using CADisplayLink,但也许我选择了错误的位置/方法(如drawRect:)来观察,任何推荐的方法供我观察?

问题:

  1. 仪器如何准确测量FPS?
  2. DOCusing duration to calculate FPS错了吗?
  3. 计算FPS的最佳方法是什么?

谢谢!

frame-rate objective-c drawrect ios cadisplaylink

5
推荐指数
1
解决办法
4982
查看次数

rightCalloutAccessoryView未显示在MKPinAnnotationView上

我在MKMapView上使用MKPinAnnotationView,标题和副标题正常显示,但未rightCalloutAccessoryView显示.

我试了很多谷歌,但还没有显示出来.我的代码如下.

- (void)addAnnotation
{
    CLLocationCoordinate2D theCoordinate = self.location.coordinate;

    MapAnnotation *annotation = [[MapAnnotation alloc] initWithCoordinate:theCoordinate];
    annotation.title = @"Pin";
    annotation.subtitle = @"More information";

    [self.mapView addAnnotation:annotation];
}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MapAnnotation class]]) {
        static NSString *reuseIdentifier = @"MyMKPinAnnotationView";
        MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:reuseIdentifier];

        if (!annotationView) {
            annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
            annotationView.pinColor = MKPinAnnotationColorRed;
            annotationView.enabled = YES;
            annotationView.canShowCallout = YES;
            annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        } else {
            annotationView.annotation = annotation;
        } …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa cocoa-touch mkmapview ios

4
推荐指数
1
解决办法
1922
查看次数

HOWTO设置AddressBookAccessRequest alertView的文本?

我知道在iOS 6中我们应该首先请求访问联系人,如下所示: 应用程序想要访问您的联系人

但现在,我想知道如何在警报视图中添加详细消息,只需在alert-title和两个按钮之间添加.我确实看到有些应用已经做到了.

我使用ABAddressBookCreateWithOptionsABAddressBookRequestAccessWithCompletion,但前一个选项保留为NULL,而后一个选项仅接受回调块.

我搜索了很多,比如另一个Q,iOS 6发行说明Apple Doc,但未能成功.

非常感谢您的帮助.:)

ios

3
推荐指数
1
解决办法
1616
查看次数

如何获得iOS中任意线程的正确帧指针?

获取框架指针的方法

在此处输入图片说明

在对iPhone 5S设备/ Xcode的7运行的演示应用,我试过让frame pointer一个的任意线程使用thread_get_state,但总是导致不正确的一项:

- (BOOL)fillThreadState:(thread_t)thread intoMachineContext:(_STRUCT_MCONTEXT *)machineContext {
    mach_msg_type_number_t state_count = MACHINE_THREAD_STATE_COUNT;
    kern_return_t kr = thread_get_state(thread, MACHINE_THREAD_STATE, (thread_state_t)&machineContext->__ss, &state_count);
    if (kr != KERN_SUCCESS) {
        char *str = mach_error_string(kr);
        printf("%s\n", str);
        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我阅读了这样的帧指针:uintptr_t fp = machineContext.__ss.__fp;根据Apple Doc(ARMv6ARM64),

寄存器R7用作ARMv6上的帧指针

而x64在ARM64上

帧指针寄存器(x29)必须始终寻址有效的帧记录,尽管某些功能(例如叶函数或尾部调用)可能选择不在此列表中创建条目。结果,即使没有调试信息,堆栈跟踪也将始终有意义。

_STRUCT_ARM_THREAD_STATE64
{
    __uint64_t    __x[29];  /* General purpose registers x0-x28 */
    __uint64_t    __fp;     /* Frame pointer x29 */
    __uint64_t    __lr;     /* Link register …
Run Code Online (Sandbox Code Playgroud)

c callstack stack-trace stack-frame ios

3
推荐指数
1
解决办法
939
查看次数

核心数据迁移崩溃

我们的一些用户因核心数据迁移而崩溃.

关于"核心数据迁移和崩溃"已有几个问题,主要是关于内存使用和UI响应.

迁移大型Core Data数据库崩溃

进行核心数据迁移时内存不足

核心数据导致应用程序在迁移时崩溃

核心数据轻量级迁移崩溃

对于高内存峰值,Apple建议使用多次通过解决方案,这是另一个大型数据集解决方案.

当我尝试重现问题时,比如使用轻量级迁移迁移大型数据集,Xcode有时会因内存使用而终止我的应用程序.所以我认为我们的用户可能因为同样的原因而遇到崩溃 - 内存不足.

但是,@ Marcus S. Zarra告诉我:

@Jason Lee:轻量级迁移不会耗尽内存.也许你把它与糟糕的食物崩溃或其他什么混淆了?我建议打开一个新的SO问题并给我链接. - Marcus S. Zarra

所以我创建这个新问题要问:

  1. 如何判断应用程序在Core Data Migration上崩溃的原因?内存问题或没有UI响应.
  2. 如何解决问题?

谢谢 .

更新1:添加崩溃日志

@Marcus S. Zarra,你是对的.ATE BAD FOOD ......

Date/Time:       2014-01-03 15:15:00.801 +0800
OS Version:      iPhone OS 5.1.1 (9B206)
Report Version:  104

Exception Type:  00000020
Exception Codes: 0x8badf00d
Highlighted Thread:  0

Application Specific Information:
com.xxx.xxx failed to launch in time

Elapsed total CPU time (seconds): 7.330 (user 7.330, system …
Run Code Online (Sandbox Code Playgroud)

iphone core-data objective-c large-data ios

2
推荐指数
1
解决办法
2248
查看次数