小编Its*_*ret的帖子

是否可以将AutoLayout与UITableView的tableHeaderView一起使用?

因为我发现AutoLayout我到处都使用它,现在我正在尝试使用它tableHeaderView.

我做了subclass一些UIView添加的东西(标签等......)我想要他们的约束,然后我把它添加CustomViewUITableView' tableHeaderView.

一切都工作得很好,除了UITableView总是显示上面CustomView,通过以上我指的CustomViewUITableView,因此它不能被看到!

看来,无论我做什么,对heightUITableView" tableHeaderView始终 0(所以是宽度,x和y).

我的问题:如果不手动设置框架,是否可以完成此操作

编辑:我正在使用 的CustomView' subview有这些限制:

_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview ipad ios autolayout

91
推荐指数
8
解决办法
6万
查看次数

Elixir,IO.inspect不修剪一长串清单

当我做:

IO.inspect [:right, :top, :left, ...very_long_list]
Run Code Online (Sandbox Code Playgroud)

我只得到第一项(这是解决15拼图的动作列表),如下所示:

[:right, :top, :left, :bot, :bot, :left, :top, :top, :right, :right, :bot,
  :left, :bot, :left, :top, :right, :bot, :right, :top, :top, :left, :bot,
  :left, :top, :right, :right, :bot, :bot, :left, :top, :top, :left, :bot,
  :right, :top, :right, :bot, :left, :left, :top, :right, :bot, :right, :top,
  :left, :left, :bot, ...] # => See the '...'
                                instead I would like 
                                to get the complete list
Run Code Online (Sandbox Code Playgroud)

如何判断IO.inspect不修剪清单?有选择还是什么?

elixir inspect

37
推荐指数
2
解决办法
8939
查看次数

printf语句中转换的百分比如何?

也许这不属于SO,但我不知道在哪里.

我不得不重新实现printf(3)C不使用,会做的转换对我有什么功能,我几乎做了,但我坚持上%a,我真的不明白发生了什么位置,例如:

printf("%a\n", 3.0); //#=> 0x1.8p+1
printf("%a\n", 3.1); //#=> 0x1.8cccccccccccdp+1
printf("%a\n", 3.2); //#=> 0x1.999999999999ap+1
printf("%a\n", 3.3); //#=> 0x1.a666666666666p+1
printf("%a\n", 3.4); //#=> 0x1.b333333333333p+1
printf("%a\n", 3.5); //#=> 0x1.cp+1
printf("%a\n", 3.6); //#=> 0x1.ccccccccccccdp+1
Run Code Online (Sandbox Code Playgroud)

我当然读到了那个说:

double参数被舍入并在样式[ - ] 0xh.hhhp [+ - ] d中转换为十六进制表示法,其中十六进制点字符后面的位数等于精度规范.

但是,这并不能真正帮助我不明白的过程是转换3.21.999999999999ap+1

我不需要任何代码,但更多的解释.

PS:如果这不是这个问题的地方,你可以指引我到正确的地方吗?

编辑:虽然@juhist答案适用于数字> = 1.0它没有解释如何获得0.0et 之间的数字结果1.0:

printf("%a\n", 0.01); //#=> 0x1.47ae147ae147bp-7
printf("%a\n", 0.1);  //#=> 0x1.999999999999ap-4
printf("%a\n", 0.2);  //#=> 0x1.999999999999ap-3
printf("%a\n", 0.3);  //#=> 0x1.3333333333333p-2 …
Run Code Online (Sandbox Code Playgroud)

c printf hex data-conversion

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

在基于视图的NSTableView中使用checkBox发出问题

我有一个包含所有数据的NSDictionary:

  • 一个标题(对这个问题不重要)
  • 一个链接(对这个问题不重要)
  • 一个NSDictionary数组,再次包含1个标题和1个链接

我在基于视图的表视图中显示这些数据,如下所示:

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tv
{
    if (tv == _downloadTable) 
    //I use this "if" because I have another tableView that has nothing to do
    //with this one
    {
        return [[myDictionary objectForKey:@"myArray"] count];
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要2列tableView,一列用于显示标题,另一列用复选框,这样可以让我知道哪一行被选中.

- (NSView *)tableView:(NSTableView *)tv viewForTableColumn :(NSTableColumn *)tableColumn row :(NSInteger)row 
{
    if (tv == _downloadTable) 
    {
        if (tableColumn == _downloadTableTitleColumn) 
        {
            if ([[[myDictionary         objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"]) 
            {
            NSString *title = [[[myDictionary objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"];
            NSTableCellView *result = [tv makeViewWithIdentifier:tableColumn.identifier owner:self];
            result.textField.stringValue = title;
            return result; …
Run Code Online (Sandbox Code Playgroud)

objective-c interface-builder nstableview nsbutton

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

Core Data永远不会释放从外部存储加载的NSData

所以我Core Data用来存储一些图像.(也是最新生成的子类mogenerator)

(而且我也在使用ARC)

是的,我知道我可以保留一个参考并将其存储在磁盘上,但我想:

"嘿,他们做了一个选择,所以我可以做到这一点,而不必亲自管理它!"

所以我尝试了它并且它完美地工作,除了所有加载的数据从未发布.


在此输入图像描述

在此输入图像描述


在ViewController的初始化中,谁将负责显示图像,我给它通常的主要NSManagedObjectContext.

viewDidAppear我调用的方法中,我设置了UIScrollView图像:

编辑:所以这不是一个真正的获取请求,我有Entity1一对多的图像,我用它来获取我从同一个上下文得到这个entity1的图像.我只想简化以便更好地解释.

- (void)setupScrollViewWithEntity1:(Entity1 *)entity1 {
    DDLogVerbose(@"-- %@ : SETUP SCROLL VIEW --", self);
    // I remove any previous subviews
    [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    self.scrollView.contentSize = self.scrollView.frame.size;

    /* Here I get the imagesArray with a NSFetchRequest */ 
    //So it's not really a fetch request I have an `Entity1` which have one-to-many with images and I use it to get the images …
Run Code Online (Sandbox Code Playgroud)

iphone core-data objective-c ios automatic-ref-counting

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

我该如何测试这个C函数

作为一个练习,我有一个奇怪的问题:

编写一个函数,该函数将指针的指针的指针指针指向int的指针的指针作为参数,并为其赋值.

我认为我写的功能是对的(请更正,如果不是)但我该如何测试呢?

void function(int *********anInt)
{
    *********anInt = 5;
}
Run Code Online (Sandbox Code Playgroud)

我试过了 :

int main(void) {
    int *********nbr = malloc(sizeof(int));
    function(nbr);
    printf("%d", *********nbr);
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个段错误,我只是了解mallocpointers,所以我不完全理解.

c pointers

5
推荐指数
3
解决办法
959
查看次数

取消NSOperation并立即将其从队列中删除

所以我已经考虑了几天了,我似乎无法找到一个好的方法来使它工作.

我有一个NSOperationQueue只允许一次一个操作.我从文档中了解到:

在OS X v10.6及更高版本中,取消操作会导致操作忽略它可能具有的任何依赖性.此行为使队列可以尽快执行操作的start方法.反过来,start方法将操作移动到完成状态,以便可以从队列中删除它.

当我发送取消时它将设置isCancelled为YES,但我的问题是:

假设我有20个NSOperation队列而且我刚刚取消了18号,它将一直保持NSOperationQueue到它可以运行并说它已经完成(我的NSOperation检查正确isCancelled)但是因为它保留在队列中它也保留在UITableView我设置dataSource的东西中喜欢myOperationQueue.operations.

这就是困扰我的用户,用户将点击Cancel将调用该cancel方法,NSOperation但操作仍会显示,因为它仍然在队列中.

我考虑过startcancel方法中调用,但不允许只有队列才可以start.

编辑:我也试着重写isFinishedcancel:

[self willChangeValueForKey:@"isFinished"];
_isFinished = YES;
[self didChangeValueForKey:@"isFinished"];
Run Code Online (Sandbox Code Playgroud)

它工作但它也发送startNSOperation队列中的下一个,它可以导致同时有2个NSOperation,我只想要一个.

objective-c uitableview nsoperation nsoperationqueue ios

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

UISearchDisplayController动画reloadData

我一直在阅读有关UISearchDisplayController它的所有文档,delegate但是当搜索条件发生变化时,我找不到任何方法来动画表格视图.

我正在使用这两种方法: UISearchDisplayController方法

他们都返回,YES但仍然找不到任何方法做类似的事情: UITableView方法

我不知道这是否是重要的,但我使用的是NSfetchedResultsController 填充UITableViewUISearchDisplayController

那是谢谢!

core-data uitableview uisearchdisplaycontroller nsfetchedresultscontroller

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

NSOperationQueue INSIDE a NSOperation

我创建了一个NSOperation目标是从20个URL下载一些图像(如20).所以在这里NSOperation我创建20 AFImageRequestOperation添加它们NSOperationQueue并调用-waitUntilAllOperationsAreFinished队列.

问题是,它不等待,它立即返回.这是代码

- (void)main {
    NSArray *array = [I have the 20 links stored in this array];

    self.queue = [[NSOperationQueue alloc]init];
    self.queue.maxConcurrentOperationCount = 1;

    for (int i = 0; i < array.count; i++) {                
        NSURL *url = [NSURL URLWithString:[array objectAtIndex:i]];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        AFImageRequestOperation *op = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:^UIImage *(UIImage *image) {
            return image;
        } success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
        // SUCCESS BLOCK (not relevant)
        } …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c nsoperation nsoperationqueue afnetworking

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

在iOS 7中修改NSFetchedResultsController fetchRequest

我找到了这个答案:https://stackoverflow.com/a/4861732/1486928

我正在尝试这样做,但它不会让我分配一个新创建NSFetchRequest的文档,它说:

@property(非原子,只读)NSFetchRequest*fetchRequest

但在下一行中它说:

特殊注意事项:如果要修改提取请求,则必须遵循"提取请求"中描述的步骤.

那是哪个,我是否可以修改它:/?这个属性非常令人困惑,readonly他们说我们可以修改它:(

core-data nsfetchedresultscontroller nsfetchrequest ios

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

C指针和malloc混淆EXC_BAD_ACCESS

因此,今天的演习是创建一个函数initialize an array of int,并fill it从0到n.

我写了这个:

void        function(int **array, int max)
{
    int i = 0;
    *array = (int *) malloc((max + 1) * sizeof(int));
    while (i++ < max)
    {
        *array[i - 1] = i - 1; // And get EXC_BAD_ACCESS here after i = 2
    }
}
Run Code Online (Sandbox Code Playgroud)

经过几个小时的EXC_BAD_ACCESS疯狂后,我决定搜索SO,找到这个问题:在函数中初始化数组 然后将我的函数更改为:

void        function(int **array, int max)
{
    int *ptr; // Create pointer
    int i = 0;
    ptr = (int *) malloc((max + 1) …
Run Code Online (Sandbox Code Playgroud)

c malloc pointers exc-bad-access

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

C printf%a和%La

我不得不重新实现printf(3)Cwihtout使用,会做这种转换我的任何功能.

我想后,我明白我做感谢您对球员如何%a工作:如何在%printf语句转换工作?

然后我意识到我不明白这rounding是怎么做的所以我问:C printf浮动四舍五入然后认为我在你帮助我之后就完成了.

而现在这%a完全正常工作,就像我认为的%La那样完全一样,%along double由于该男子只说:

修饰语a,A,e,E,f,F,g,G

l(ell)double(忽略,与没有它相同的行为)
L long double

我发现它输出的东西完全不同:'(

double a_double = 0.0001;
long double a_long_double = 0.0001;
printf("%a\n", a_double); #=> 0x1.a36e2eb1c432dp-14
printf("%La\n", a_long_double); #=> 0xd.1b71758e21968p-17
Run Code Online (Sandbox Code Playgroud)

%a结果总是开头1.,现在我完全不明白什么%La是做.

你能帮我了解的过程是转换0.00010xd.1b71758e21968p-17

编辑:我真的不明白的部分是为什么 %a总是输出一些开头的东西1.而不是%La

EDIT2:为了更精确:为什么%a选择输出1. ...p-14和 …

c printf hex type-conversion

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