小编Sno*_*man的帖子

地址错误时无法访问内存

我收到这个错误:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000407265 in Quadtree::deeper (this=0x7fffffffe430, 
    orig=@0x7fffffffe430, n=@0x7a1da0, tol=Cannot access memory at address 0x7fffff3feffc
) at quadtree.cpp:47
47      int Quadtree::deeper(QuadtreeNode * & orig, QuadtreeNode * & n, int tol, int tolNum) {
Run Code Online (Sandbox Code Playgroud)

这是第47行:

int Quadtree::deeper(QuadtreeNode * & orig, QuadtreeNode * & n, int tol, int tolNum) {
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我根本没有得到任何valgrind错误,但在运行时只有gdb错误和seg错误.这个错误在一般意义上可能意味着什么(无需查看我的其余代码)?

c++

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

从数组中读取随机值

我有一个14字符串的数组.我想向用户显示这14个字符串中的每一个而不重复.我得到的最接近的是创建一个整数数组并对它们的值进行混洗,然后使用int数组中的一个数字作为索引从字符串数组中读取:

    //appDelegate.randomRiddles is an array of integers that has integer values randomly
     appDelegate.randomRiddlesCounter++;
     NSNumber *index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
     int i = [index intValue];
     while(i>[appDelegate.currentRiddlesContent count]){
        appDelegate.randomRiddlesCounter++;
        index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
        i = [index intValue];
                    }
hintText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"hint"];
questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"question"];
Run Code Online (Sandbox Code Playgroud)

但我的方式是导致崩溃和重复.哦,每次我从字符串数组中读取一个值时,该字符串将从数组中删除,使其计数减少1.这样会使这一点复杂化.

random objective-c

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

自定义editingAccessoryView无法正常工作

我有一个带有自定义单元格的UITableView的以下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FolderCellViewController"];
    if (cell == nil) {
        // Load the top-level objects from the custom cell XIB.
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"FolderCellViewController" owner:self options:nil];
        // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain).
        cell = [topLevelObjects objectAtIndex:0];
        cell.editingAccessoryView=accessoryView; //accessoryView is a UIView within a UITableViewCell, and it is properly connected in IB
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

    }
    return cell; …
Run Code Online (Sandbox Code Playgroud)

uitableview uikit ios

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

我应该为每个服务器请求验证用户的密码吗?

如果这对某些人来说可能是常识,我会道歉,但我还在学习.我有一个iOS应用程序,可以将文件同步到Web服务器.一旦用户登录设备,他仍然会登录,除非他退出.目前,每当用户发起服务器请求(例如添加,更新或删除文件)时,我只将用户的电子邮件而不是密码发送到服务器,因为用户已经在设备上进行了身份验证.

我是否应该在每次提出请求时发送用户存储的密码,并让服务器在继续处理请求之前对其进行身份验证?为什么或者为什么不?

security iphone web-services ios

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

具有Core Data对象的动态UITableView高度

过去几天我一直试图解开一个谜团,为什么批量大小为20的NSFetchedResultsController在获取完成后会立即故障(即加载到内存中)所有对象,导致请求大约需要20秒.

事实证明,这是因为在我的heightForRowAtIndexPath中,高度基于每个获取对象的NSString属性的长度,因此在重新加载表时,如果表有2000行,则计算每个行的高度.从一开始,由于我访问了对象的文本属性,它会在一开始就在2000个对象(20个大小的批处理)中出错,导致它永远占用.(我不知道排的高度是在开始时计算的).

所以问题是,如果我有一个批量大小为20的获取结果控制器,但我的行高是基于对象的文本属性,如果我尝试访问会导致该对象不再是一个错误但是实际加载到内存中,计算高度的解决方法是什么?

我有什么选择?

core-data objective-c row-height uitableview ios

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

这个Core Graphics代码线程安全吗?

只要我打电话,我知道在任何线程上绘制都是安全的

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

在同一个线程上.

通过这种方法截取视图的截图大约需要300毫秒,这也不错,但是我处境很紧,所以我想在后台线程中进行.

这是我正在做的事情:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
        [view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    });
Run Code Online (Sandbox Code Playgroud)

这里唯一有问题的是view,它位于主线程上.从后台线程调用renderInContexta 是否安全view.layer?或者一般来说,从另一个线程读取UIKit对象是否安全?

(并且请不要给我默认的"UIKit不是线程安全的"答案.我已经知道了.这是一个特例(不要告诉我没有特殊情况).)

(上面的代码工作正常,但我不确定这是不是巧合.)

iphone core-graphics objective-c ios

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

dealloc中dispatch_async安全吗?

我有一个随机的EXC_BAD_ACCESS KERN_INVALID_ADDRESS,但我不能指出来源.但是,我想知道这可能是这样的:

我有一个像这样创建的audio_queue:

_audio_queue = dispatch_queue_create("AudioQueue", nil);
Run Code Online (Sandbox Code Playgroud)

我用来创建和访问一个名为的对象_audioPlayer:

 dispatch_async(_audio_queue, ^{
     _audioPlayer = [[AudioPlayer alloc] init];
 });
Run Code Online (Sandbox Code Playgroud)

音频播放器归MovieView:

@implementation MovieView
{
     AudioPlayer *_audioPlayer
}
Run Code Online (Sandbox Code Playgroud)

然后,在dealloc方法中MovieView,我有:

- (void)dealloc
{
    dispatch_async(_audio_queue, ^{
        [_audioPlayer destroy];
    });
}
Run Code Online (Sandbox Code Playgroud)

这可以接受吗?我认为,当块被调用时,它MovieView已经被释放,并且当试图访问时_audioPlayer,它不再存在.是这样的吗?

我的崩溃报告只说:

MovieView.m line 0
__destroy_helper_block_
Run Code Online (Sandbox Code Playgroud)

objective-c

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

记得LastFocusedIndexPath无法处理UICollectionView

我有一个标准水平布局的集合视图.在呈现视图控制器然后解除它时,集合视图重置焦点回到第一个单元格,即使最后一个焦点单元格不是那个.

我已经定了

self.collectionView.remembersLastFocusedIndexPath = YES;
Run Code Online (Sandbox Code Playgroud)

奇怪的是,只有当我在导航控制器上推动视图控制器时才会发生这种情况.

所以,如果我这样做

[self.navigationController pushViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)

然后解雇,remembersLastFocusedIndexPath不能正常工作.

但是,如果我:

[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作.

知道为什么它不能通过导航控制器工作?

tvos

7
推荐指数
3
解决办法
2501
查看次数

如何像在Messages.app中一样移动iPhone键盘?

可能重复:
iOS应用程序中的iMessage样式后退键盘

在iOS5消息应用程序中,您可以在键盘上向下滑动手指以使其上下移动.这也可以在AppStore中的iA Writer应用程序中完成.如何在代码中执行此操作,即访问和修改UIKeyboard的Y位置?

iphone objective-c ios

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

核心数据获取速度非常慢

我正在运行一个非常基本的NSFetchRequest来获取一个实体MessageObject.我只有2000个消息对象,我想要全部检索它们.但是,由于一些奇怪的原因,获取请求超过10秒!

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
Run Code Online (Sandbox Code Playgroud)

就是这样,那是我的获取请求.我甚至没有使用谓词,它需要超过10秒.对于导致这种情况的原因,我完全不知道.如果有人有任何想法或起点,请分享.

我也尝试过启用SQLite调试logging(-com.apple.CoreData.SQLDebug 1),但是我从这个简单的fetch中获得了数千行输出.这是正常的吗?

 2012-06-22 19:39:59.171 myapp[81825:15e03] about to execute fetch
 2012-06-22 19:39:59.172 myapp[81825:15e03] CoreData: sql: SELECT 0, t0.Z_PK FROM ZMBNOTEOBJECT t0 ORDER BY t0.ZCREATEDATE DESC
 2012-06-22 19:39:59.178 myapp[81825:15e03] CoreData: annotation: sql connection fetch time: 0.0061s
 2012-06-22 19:39:59.179 myapp[81825:15e03] CoreData: annotation: total fetch execution time: 0.0067s for 2052 rows.
 2012-06-22 19:39:59.179 myapp[81825:15e03] …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa core-data objective-c ios

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