小编Jim*_*Jim的帖子

带有核心数据的Xcode 4中的图形谓词生成器

我正在使用Xcode 4,我找不到使用图形谓词构建器的方法.它还在吗?我该如何使用它?这方面的文件在哪里?

谢谢

core-data predicatebuilder xcode4

15
推荐指数
1
解决办法
4225
查看次数

Objective-C中的CGRectMake

我正在使用CGRectMake在UITableViewCell内部生成标签和textField.这是代码:

   label = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 0, 20)];
   label.backgroundColor = [UIColor redColor];      

   textField =
     [[UITextField alloc] initWithFrame:CGRectMake(0, 10, 0, 20)];
   textField.backgroundColor = [UIColor blueColor];

  [textField setDelegate:self]; // set the delegate to this object
  [textField addTarget:self action:@selector(textFieldDidEndOnExit)
      forControlEvents:UIControlEventEditingDidEndOnExit];

  [self.contentView addSubview:label]; // add label to the cell
  [self.contentView addSubview:textField]; // add textField to cell
Run Code Online (Sandbox Code Playgroud)

首先,我的理解是将参数定义为

  CGRectMake(x, y, width, height) 
Run Code Online (Sandbox Code Playgroud)

我在单元格中看到的是左侧的标签,右侧是textField.两者之间有一个小空间.

我希望X,Y坐标相对于单元格左上角的0,0点,正值向下和向右.

我对所见所闻感到困惑.

我看到标签位于我单元格的左侧,但它的X值大于textField的X值.textField从标签的右侧开始.

我不明白为什么每个的宽度值都设置为0(零).

此外,是什么使textField采取相对于标签的位置,而不是相对于单元格坐标.

这是一个简单的单元格草图和我在其中看到的内容(设置了背景颜色,我可以清楚地看到CGRects的放置位置):

0,0---------------------------------------------------------------------------------
|                                                                                   |
|   ----------------    -----------------------------------------------------------------
|  |                |  |    
|  |  label         |  | …
Run Code Online (Sandbox Code Playgroud)

objective-c

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

使用作为实例变量的 Dash 对象作为 Dash 中的回调的 Python 装饰器 - 失败

我正在更新一些代码以使用 Dash 和 plotly。绘图的主要代码是在一个类中定义的。我用 Dash 控件替换了一些 Bokeh 小部件,最后得到了一个如下所示的回调:

class MakeStuff:
    def __init__(self, ..., **optional):
        ...
        self.app = dash.Dash(...)
        ...

    @self.app.callback(
    dash.dependencies.Output('indicator-graphic', 'figure'),
        [dash.dependencies.Input('start-time-slider', 'value'),
         dash.dependencies.Input('graph-width-slider', 'value')]
        )
    def update_graphs(self,range_start,graph_width):
        print(...)
Run Code Online (Sandbox Code Playgroud)

我正在关注Dash 网站上的一些示例。我能够运行示例,包括回调。在我的代码中,没有装饰器,代码运行时不会出错,按照我的预期生成图形和控件。(当然,代码不完整,但没有错误。)当我包含装饰器时,我得到这个错误:

NameError: 名称 'self' 未定义

我就这样累了,首先,只是模仿代码示例:

class MakeStuff:
    def __init__(self, ..., **optional):
        ...
        app = dash.Dash(...)
        ...

    @app.callback(
    dash.dependencies.Output('indicator-graphic', 'figure'),
    [dash.dependencies.Input('start-time-slider', 'value'),
     dash.dependencies.Input('graph-width-slider', 'value')]
    )
    def update_graphs(self,range_start,graph_width):
        print(...)
Run Code Online (Sandbox Code Playgroud)

当然,变量“app”只在init函数的范围内知道,所以它不起作用也就不足为奇了,给出了类似的错误:

NameError:未定义名称“应用程序”

是否有一种简单的方法可以设置此装饰器使其工作,同时仍将我的代码保留在类定义中?我猜装饰器正在进行一些预处理,但我不太了解它,无法提出解决方案。

python callback python-decorators plotly-dash

14
推荐指数
2
解决办法
3568
查看次数

使用仪器通过低内存警告工作

我正在尝试使用仪器来处理一些低内存条件.我可以看到物理内存空闲监视器中的内存消耗下降到几MB,即使分配显示所有分配大约为3 MB且总字节数为34 MB.

我已经开始遇到崩溃,因为我将一些操作移动到一个带有NSOperationQueue的单独线程.但是在改变之前我并没有使用乐器.尽管如此,我打赌我做了一些我可以撤消以阻止崩溃的事情.

顺便说一句,没有仪器或连接调试器,它会更加稳定.

我的泄漏几乎没有(在崩溃之前最多可能是一百字节).

当我看Allocations时,我只看到非常原始的对象.并且它报告的总内存也非常低.所以我无法看到我的应用程序如何导致这些低内存警告.

当我从启动时看Heap Shots时,我看不到大约3 MB,在基线和所有堆增长值的总和之间.

我应该怎么看才能找到问题所在?例如,我可以将它隔离到我的一个视图控制器实例吗?或者我的其他一个例子?

我做了什么: 我关闭了设备并重新启动,这带来了显着的改进.仪器未报告低内存警告.另外,我注意到启动时的物理空闲内存在重新启动之前只有大约7 MB,重启后大约为60 MB.

但是,我看到物理可用内存非常规则(周期性)下降,从43 MB下降到6 MB(然后再回升到43 MB).我想知道它造成什么.我没有在这个应用程序中运行任何计时器.(我确实有一些performSelector:afterDelay :,但是在这些测试中它们没有活动.)

我没有使用ARC.

cocoa-touch memory-management instruments ios

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

在iOS中查找rootViewController

在ShareKit中,代码需要确定rootViewController的位置,以便它可以显示模态视图.出于某种原因,iOS 5中的代码失败了:

    // Try to find the root view controller programmically

    // Find the top window (that is not an alert view or other window)
    UIWindow *topWindow = [[UIApplication sharedApplication] keyWindow];
    if (topWindow.windowLevel != UIWindowLevelNormal)
    {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for(topWindow in windows)
        {
            if (topWindow.windowLevel == UIWindowLevelNormal)
                break;
        }
    }

    UIView *rootView = [[topWindow subviews] objectAtIndex:0];  
    id nextResponder = [rootView nextResponder];

    if ([nextResponder isKindOfClass:[UIViewController class]])
        self.rootViewController = nextResponder;

    else
        NSAssert(NO, @"ShareKit: Could not find a root view …
Run Code Online (Sandbox Code Playgroud)

uiapplication ios

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

UINavigationController在顶部有额外的状态栏间隙

当我设置它时,这看起来很简单,但我无法解释为什么状态栏和导航栏之间存在这种差距.此外,包含的视图看起来可能正确对齐,它只是向下移动的导航栏.差距看起来像状态栏的大小,所以我希望它与它有关,但我不知道是什么.

导航栏有额外的空间

以下是设置导航控制器的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    advancedVC = [[AdvancedSearchFormVC alloc] initWithNibName:@"AdvancedSearchForm" bundle:nil];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:advancedVC];
    nav.navigationBar.tintColor = [UIColor defaultNavBarTint];
    nav.navigationBar.topItem.title = NSLocalizedString(@"SearchTitle", nil);
    UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"SearchButton", nil) style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];          
    nav.navigationBar.topItem.rightBarButtonItem = searchButton;

    self.view = nav.view;
}
Run Code Online (Sandbox Code Playgroud)

rootViewController使用xib文件中的视图,我在其中模拟了状态栏,导航栏和标签栏.

cocoa-touch uinavigationbar uinavigationcontroller ios

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

按键点击事件是否被Tap手势识别器覆盖?

我有一个按钮,如果有任何东西被按下按钮,我想要消失.所以我设置了目标:action:对于删除按钮:

[self.deleteButton addTarget:self action:@selector(deleteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

随后将点击手势识别器添加到包含视图:

[self.superview addGestureRecognizer:self.tapOutsideDelete];
Run Code Online (Sandbox Code Playgroud)

当我这样做时,不执行deleteButton的操作,就像无法识别按钮点击一样.在这种情况下,手势识别器确实有效.但是当我点击deleteButton时它也有效,这让我认为点击手势识别器优先于按钮点击.

如果我删除手势识别器,deleteButton正常工作.

我显然不明白如何一起处理这两个事件.我需要做什么?

(deleteButton正在模仿表格视图单元格的删除按钮,但在这种情况下我将它放在标题视图中.我希望调用一种方法,当我点击表格中除按钮本身之外的任何地方时,删除按钮消失,它在单元格中的工作方式相同.)

events cocoa-touch uigesturerecognizer

10
推荐指数
1
解决办法
5383
查看次数

在类中使用self方法

我在ShareKit中遇到了这个代码,我不明白作者self在类方法中使用了什么.有一个警告:不兼容的指针类型将'Class'发送到参数类型id<FBSessionDelegate>. 我想清理这些警告,所以我可以看到那些可能会在以后受到伤害的警告.我能做什么/应该做什么不会打破这个?

这是SHKFacebook.m文件,类名是SHKFacebook

+ (void)logout
{
    FBSession *fbSession; 

    if(!SHKFacebookUseSessionProxy){
        fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                                 secret:SHKFacebookSecret
                                               delegate:self];

    }else {
        fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                        getSessionProxy:SHKFacebookSessionProxyURL
                                               delegate:self];
    }

    [fbSession logout];
}
Run Code Online (Sandbox Code Playgroud)

class-design objective-c class-method objc-protocol

9
推荐指数
1
解决办法
5419
查看次数

NSFetchedResultsController objectAtIndex,objectAtIndexPath,indexPathForObject不一致

我有一个部分的获取结果.我可以使用[[fetchedResultsController fetchedObjects] objectAtIndex:index]所有对象访问对象.但是当我像这样使用objectAtIndexPath时失败了:[fetchedResultsController objectAtIndexpath:indexPath]

将一行(对于其中一个SearchResult对象)插入相应的表后发生错误.该对象似乎正确插入到新表中.在我直观地确认了这一点之后,我选择了其中一行,然后开始了.

以下是发生错误的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SearchResult *event;
    NSLog(@"Number of sections in fetchedResultsController: %d", [[fetchedResultsController sections] count]);
    for (NSUInteger i=0; i<[[fetchedResultsController fetchedObjects] count]; i++) {
        event = (SearchResult*)[[fetchedResultsController fetchedObjects] objectAtIndex:i];
        NSLog(@"object at index[%d]: %@", i, event.title );
        NSLog(@"indexPath for object at index[%d]:%@", i, [fetchedResultsController indexPathForObject:event]);
    }

    NSLog(@"indexPath passed to method: %@", indexPath);

    SearchResult *result = [fetchedResultsController objectAtIndexPath:indexPath];  // *** here is where the error occurs ***

    [viewDelegate getDetails:result];
}
Run Code Online (Sandbox Code Playgroud)

我在最后一行失败了.日志看起来像这样:

Number …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c uitableview nsfetchedresultscontroller

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

如何在matlab中格式化文本输出的复数

我有一个复数,我想使用fprintf命令作为文本输出.我没有看到复数的格式规范.是否有捷径可寻?

使用定点的格式规范仅输出实部.

matlab string-formatting

8
推荐指数
2
解决办法
9499
查看次数