小编use*_*951的帖子

NSUserDefault线程安全吗?

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html说它是

...应禁止用户通过禁用任何适当的控件来编辑该首选项.

NSUserDefaults的类是线程安全的.NSURL和文件引用URL的持久性......

这个长时间的讨论说它不是

http://www.cocoabuilder.com/archive/cocoa/155227-nsuserdefaults-thread-safety.html

那么哪一个是对的?也为什么意见分歧.

arrays objective-c thread-safety

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

什么是coredata相当于android

我曾经为iPhone编程.

但后来我想在Android上制作另一个类似的程序.

那么,我应该使用类似于coredata的框架吗?

android有类似的东西吗?

android core-data

31
推荐指数
4
解决办法
2万
查看次数

零和零之间有什么区别

在目标C?

他们真的是一回事吗?

如何测试一个对象是否为零?

xcode objective-c

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

响应者链如何在iPhone中工作?什么是"下一个响应者"?

这是文档说的:

如果[事件或动作消息]的第一响应者无法处理事件或动作消息,则它将其转发到称为响应者链的链接系列中的"下一个响应者".响应者链允许响应者对象将处理事件或动作消息的责任转移到应用程序中的其他对象.

如果响应者链中的对象无法处理事件或操作,它会将消息重新发送到链中的下一个响应者.消息向上传递到更高级别的对象,直到它被处理.如果未处理,应用程序将丢弃它.

好的,下一个响应者是什么?

是父视图吗?它背后的观点?iOS如何确定第一响应者和第二响应者?

iphone objective-c uiresponder ios

27
推荐指数
4
解决办法
2万
查看次数

如何知道UITableView.visibleCells的索引路径?

NSArray * arrayOfVisibleTVC=[BNUtilitiesQuick ListController].tableViewA.visibleCells;
NSLog(@"array : %@", arrayOfVisibleTVC);
Run Code Online (Sandbox Code Playgroud)

会显示

"<UITableViewCell: 0x76c22a0; frame = (0 0; 320 75); autoresize = W; layer = <CALayer: 0x76bf770>>",
"<UITableViewCell: 0x76cfec0; frame = (0 75; 320 75); autoresize = W; layer = <CALayer: 0x769d260>>",
"<UITableViewCell: 0xe245f70; frame = (0 150; 320 75); autoresize = W; layer = <CALayer: 0xe245ed0>>",
"<UITableViewCell: 0xe248980; frame = (0 225; 320 75); autoresize = W; layer = <CALayer: 0xe2488c0>>",
"<UITableViewCell: 0xe24afa0; frame = (0 300; 320 75); autoresize = W; …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios

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

如何修复"未实施的协议"

当我调用一个新的控制器时TestController,我插入

<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate,UISearchBarDelegate>
Run Code Online (Sandbox Code Playgroud)

到Test.h的接口

当我在模拟器上运行应用程序时,有许多问题说"未完成的实现"和"协议中的方法未实现"

我知道有些方法没有实现,但哪一个?我怎么知道我应该添加什么方法?

xcode cocoa-touch protocols objective-c compiler-warnings

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

EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

我真的无法弄清楚为什么我有这个bug.

首先,调试器停在机器代码处

在此输入图像描述

线程也没有显示任何内容.程序实际上没有代码停止

在此输入图像描述

所以它与_dispatch_worker_thread有关

那是什么?

我怎么能调试这个?我应该回滚吗?

objective-c xcode4.3

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

使用ARC,每个线程都没有自动释放池是致命的吗?

我看了这个:

如果您在应用程序中创建了辅助线程,则需要为其提供自己的自动释放池.自动释放池及其包含的对象将在下面进一步讨论

在iOS 5开发者食谱中.

我正在用ARC编译.我一直在创建许多后台线程,似乎我做得很好.我的后台线程都没有长时间运行.所有这些对象是否会被主线程的自动释放池释放?或者是什么?

这就是我所做的调用后台线程:

+(void)doBackground:(void (^)())block
{
    //DISPATCH_QUEUE_PRIORITY_HIGH
    //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
    dispatch_async(dispatch_get_global_queue(-2,0), ^{
        block();
    });
}
Run Code Online (Sandbox Code Playgroud)

我应该改变吗?

+(void)doBackground:(void (^)())block
{
    //DISPATCH_QUEUE_PRIORITY_HIGH
    //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
    dispatch_async(dispatch_get_global_queue(-2,0), ^{
        @autoreleasepool{
        block();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

multithreading cocoa-touch nsautoreleasepool ios

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

如何创建返回块的objective-c方法

-(NSMutableArray *)sortArrayByProminent:(NSArray *)arrayObject
{
    NSArray * array = [arrayObject sortedArrayUsingComparator:^(id obj1, id obj2) {
        Business * objj1=obj1;
        Business * objj2=obj2;
        NSUInteger prom1=[objj1 .prominent intValue];
        NSUInteger prom2=[objj2 .prominent intValue];
        if (prom1 > prom2) {
            return NSOrderedAscending;
        }
        if (prom1 < prom2) {
            return NSOrderedDescending;
        }
        return NSOrderedSame;
    }];

    NSMutableArray *arrayHasBeenSorted = [NSMutableArray arrayWithArray:array];

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

所以基本上我有这个用于排序数组的块.

现在我想编写一个返回该块的方法.

我该怎么办?

我试过了

+ (NSComparator)(^)(id obj1, id obj2)
{
    (NSComparator)(^ block)(id obj1, id obj2) = {...}
    return block;
}
Run Code Online (Sandbox Code Playgroud)

我们只是说它不起作用.

block objective-c objective-c-blocks

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

子管理对象上下文的内容是否始终与其父级内容相同?

如何更新子托管对象上下文,以便它与父级具有相同的数据?

据我所知,在储蓄时,孩子只走了一步,即父母.然而,当获取提取总是非常深入到父和持久存储.所以我希望事情会是一样的.

但事实并非如此.

我有一个托管对象上下文,它是所有其他托管对象上下文的父级.

一个孩子改变数据并保存.父母也改变了.我在父进程上执行executeFetchRequest,我看到数据发生了变化.

但是,父母的一些孩子仍然使用旧数据.相同的对象id相同的数据.不知何故,该物业的价值保持不变.

如何告诉孩子从父母那里重新加载新数据?

更确切地说

说P是父母

说它有C1 C2 C3作为孩子

然后C1更改数据并提交.更改将传播到P.但是,在C2和C3处执行executeFetchRequest仍会显示旧数据.

是什么赋予了?

例如,当我检查imageBlob属性时,这就是我得到的:

儿童:

2013-02-05 13:57:42.865 BadgerNew[78801:c07] imageBlob: <UIImage: 0x89c3c50>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>
2013-02-05 13:57:42.866 BadgerNew[78801:c07] imageBlob: <null>
Run Code Online (Sandbox Code Playgroud)

家长:

2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x114af650>
2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x8e492e0>
2013-02-05 13:57:42.868 BadgerNew[78801:c07] imageBlob: <UIImage: 0x114c79b0>
2013-02-05 13:57:42.869 BadgerNew[78801:c07] imageBlob: <UIImage: 0xa8c76e0>
Run Code Online (Sandbox Code Playgroud)

这是一个更全面的版本,为什么我记下moc,父moc,blob,URL和对象ID.儿童:

特别是我希望mainqueue managedobject上下文是父节点的另一个子节点,而不是所有其他managedObjectContext的父节点.另一方面,我还希望mainQueue Managed对象上下文具有uptodate信息.我想知道标准解决方案是什么.

xcode core-data objective-c nsmanagedobjectcontext

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