小编Jan*_*ano的帖子

NSURLSession线程:跟踪多个后台下载

所以我在主线程上创建我的下载

NSURLRequest *request = [NSURLRequest requestWithURL:download.URL];
NSURLSessionDownloadTask *downloadTask = [self.downloadSession downloadTaskWithRequest:request];
[downloadTask resume];
Run Code Online (Sandbox Code Playgroud)

并将与下载相关联的NSManagedContextID添加到NSMutableDictionary中,以便稍后在委托回调中检索它

[self.downloads setObject:[download objectID] forKey:[NSNumber numberWithInteger:downloadTask.taskIdentifier]];
Run Code Online (Sandbox Code Playgroud)

我的self.downloadSession上面配置是这样的

- (NSURLSession *)backgroundSession
{
static NSURLSession *session = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.test.backgroundSession"];
    configuration.discretionary = YES;
    session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});
return session;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是委托回调似乎在不同的线程上调用

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{   
    NSManagedObjectID *downloadID = [self.downloads objectForKey:[NSNumber numberWithInteger:downloadTask.taskIdentifier]];

    double progress = (double)totalBytesWritten / (double)totalBytesExpectedToWrite;

    NSDictionary *userInfo = [NSDictionary …
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c ios ios7 nsurlsession

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

使用UITabbar的UISplitView

我有一个奇怪的,我似乎无法解决.我目前正在努力将我的应用更新到iOS7.这一切都在iOS6中有效.它是一个通用应用程序,因此使用相同的xib文件.然而,iPad在某些上使用了UISplitViews.就像我说的,这一切都适用于iOS6哦,这一切都适用于iPhone.

问题是底部是灰色条.我将标签栏更改为不透明以正确移动视图,因为我将一些UI剪切到视图底部并且位于标签栏下方,在那里进行了侧移.但是,如果我将它设置回半透明条,它会在下方但正确拉伸.如果我不这样做,它会添加一个条形码.其他选项卡在不使用splitview时工作正常.

UISplitviewController以编程方式添加.

有关更好的说明,请参见附图.

灰色条位于我的splitview和tabbar之间

我试过这个:

  • 在splitview上添加了自动调整大小
  • 已检查xib以查看拆分视图中的子视图以自动调整大小
  • 试图强制splitview成为屏幕边界
  • 删除了所有视图上绑定的剪辑
  • 删除了自动调整大小的子视图

任何想法都会受到欢迎.

谢谢你们.

更新:

设置uisplitview的背景颜色,它会使条纹黑色.所以uisplitview肯定会延伸到它.

objective-c uitabbarcontroller uisplitviewcontroller ios ios7

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

以编程方式解雇UIAlertView

我需要帮助以编程方式解雇UIAlertView.目前我有这个

UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];

然后我打电话给这个

[alert1 dismissWithClickedButtonIndex:0 animated:NO];
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.

iphone objective-c uialertview

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

SWIFT - UITableViewCellAccessoryType更改复选标记颜色

我试图弄清楚如何以编程方式(而不是在故事板中)为UITableViewCellAccessoryType.Checkmark设置颜色.

我觉得有点愚蠢,询问如何做这么简单的事情,但我在苹果文档中找不到答案.任何帮助都会很棒.谢谢.

我设置了这样的配件类型:(工作正常)

        cell.accessoryType = .Checkmark
Run Code Online (Sandbox Code Playgroud)

编辑:如果你想改变用于复选标记的图像,这对我有用.但POB的答案是我最终用来简单地改变颜色.

    let checkImage = UIImage(named: "checkmark.png")
    let checkmark = UIImageView(image: checkImage)

    cell.accessoryView = checkmark
Run Code Online (Sandbox Code Playgroud)

uitableview swift

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

如何解决iPhone中Twitter集成中的"LibXml/xmlreader.h Not found"错误

我想在我的应用程序中集成Twitter.我集成了相关文件并添加了libxml2库.我在"标题搜索路径"字段中包含了它的路径.当我尝试构建我的应用程序时,我收到错误显示LibXml/xmlreader.h: No Such file or Directory.

任何人都可以帮助我.提前致谢.

iphone twitter objective-c twitter-oauth

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

隐藏视图控制器的导航栏

我试图隐藏单个视图控制器的导航控制器没有运气,导航栏被隐藏为第一个vc,但它没有显示第二个vc.

这是我在第一个vc中使用的代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Hide the Navigation Bar
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Show the Navigation Bar
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)

swift 4有什么变化?该代码在swift 3中有效...

xcode ios swift swift4 xcode9

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

为什么将任何选择器发送到Nil对象什么都不做,但是向任何NSObject发送"无效"选择器会引发异常?

有谁知道为什么NextStep/Apple决定采用"方便的方法",在传递Nil对象时不做任何事情,但是在将实例化对象传递给无效选择器时引发异常的"Java方法"?

例如,

// This does "nothing"
NSObject *object = Nil;
[object thisDoesNothing];

object = [[NSObject alloc] init];
// This causes an NSInvalidArgumentException to be raised
[object thisThrowsAnException];
Run Code Online (Sandbox Code Playgroud)

所以一方面,我们有方便不必检查Nil(假设我们不太关心方法调用的结果) - 但另一方面,如果我们的对象,我们必须检查异常没有回应方法?

如果我不确定该对象是否会响应,我要么:

@try {
    [object thisThrowsAnException];
} @catch (NSException *e){
    // do something different with object, since we can't call thisThrowsAnException
}
Run Code Online (Sandbox Code Playgroud)

要么,

if([object respondsToSelector:@selector(thisThrowsAnException)]) {
    [object thisThrowsAnException];
}
else {
    // do something different with object, since we can't call thisThrowsAnException
}
Run Code Online (Sandbox Code Playgroud)

(后者可能是更好的方法,因为如果object为Nil,则选择器不会引发异常,因此您的代码可能不会按照您希望的方式运行).

我的问题是:为什么Apple决定以这种方式实施它?
为什么不对实例化对象进行无法识别的选择器调用而不引发异常?
或者,如果您尝试在其上调用方法,为什么不让Nil对象引发异常?

objective-c

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

iCloud + Core Data的替代方案,用于在iOS和OS X之间同步数据

我正在开发iOS/OS X的应用程序,我想在它们之间同步数据.现在我将Core Data用于持久数据.我读到iCloud还不够成熟,不能用于核心数据.

  1. 真的吗 ?

所以我尝试使用新的DropBox同步API(同步SQLite文件),但不支持OS X.

  1. Parse SDK是个好主意吗?(它还允许我添加Android支持)
  2. 如果没有,请你有其他解决方案吗?

谢谢.

macos synchronization core-data ios icloud

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

NSLog会减慢我的应用吗?

我的NSLog应用程序中有很多- 其中一些通常会打印大量数据 - 即搜索结果.这会对我的应用程序的速度产生明显的影响吗?

我不熟悉宏 - 有人能够建议启用/禁用所有NSLog的吗?

cocoa-touch objective-c ios

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

确定输出中的最大值

我是Java的初学者,我在网上找到了这个根据Collat​​z Sequence的逻辑工作的练习.它根据输入的起始编号显示正确的输出.它还显示了该过程中的步骤数.

但是,练习的最后一部分要求确定输出中的最大值.

我不知道如何用我目前的Java初学者知识来做到这一点(我只学习和练习直到while while while while循环 - 几个星期前开始).到目前为止,这是我的代码,我努力工作.:DI希望完成此操作并学习如何确定最大值.谢谢!Collat​​z序列练习

import java.util.Scanner;

public class CollatzSequence {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        int number, steps = 0;

        System.out.print("Enter a number ~ ");
        number = keyboard.nextInt();

        System.out.println(number);
        do {
            steps++;
            if (number % 2 == 0) {
                number = number / 2;
                System.out.println(number);
            }
            else {
                number = (3 * number) + 1;
                System.out.println(number);
            }
        } while (number != 1);

        System.out.println("\nThis took " + steps + …
Run Code Online (Sandbox Code Playgroud)

java

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