小编UrK*_*UrK的帖子

具有分页功能的UIScrollView的灵敏度/滚动速度

我希望UIScrollView在快速扫描后快速滚动,就像这样.虽然,当打开分页时,滚动一次只能处理一页.是否可以快速滚动,只需轻轻一按手指启用分页而无需使用手势识别器手动实现?

uiscrollview ios

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

iOS9不会从安全页面加载不安全的资源(SSL/HTTPS)

我正在尝试使用https:// URL将页面加载到iOS9上的UIWebView中.加载的页面包括来自不安全服务器的CSS和图像.

例如,页面加载:HTTPS://www.example.com/包括的样式表的http://www.example.com/style.css和图像的http://www.example.com/image.jpg

如果通过不安全连接(常规http)加载原始页面,一切正常.通过HTTPS和HTTP,一切都可以在iOS8上运行.

我没有设定NSAppTransportSecurityNSAllowsArbitraryLoads应用plist文件:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

虽然通过HTTPS加载页面时,图像加载正常,但CSS文件不加载.似乎UIWebView阻止从安全页面加载不安全的资源.

是否有任何UIWebView设置允许通过不安全的连接加载CSS?

ssl http uiwebview ios ios9

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

访问OCMock的andDo中的参数时的EXC_BAD_ACCESS

我正在尝试使用OCMock的stub和Do方法编写一段代码.

在这种情况下,正在测试UIImageView扩展类.我想检查扩展名为[self setImage:]并使用非零参数(稍后将使用其他图像比较).

使用OCMock的andDo方法时,在块完成后,测试将与EXC_BAD_ACCESS崩溃.

id mockView = [OCMockObject mockForClass:[UIImageView class]];
[[[mockView stub] andDo:^(NSInvocation *invocation)
  {
      UIImage *img;
      [invocation getArgument:&img atIndex:2]; <---- line causing the exception
      somebodySetImage |= (img != nil);

  }] setImage:OCMOCK_ANY];

  [mockView do_something_that_calls_setImage];
Run Code Online (Sandbox Code Playgroud)

我现在发现的唯一解决方案是使用andCall而不是andDo,但这使测试变得复杂.

我可以用andDo避免崩溃吗?

更新 嗯,我会尝试在这里给出一个更好的例子:这是测试代码的新部分:

- (void)testDownloadingThumbnail
{
    PInfo *_sut = [[PInfo alloc] init];

    __block id target = nil;

    id mock = [OCMockObject mockForClass:[NSOperationQueue class]];

    [[[mock expect] andDo:^(NSInvocation *inv)
    {
        NSInvocationOperation *op;
        [inv getArgument:&op atIndex:2]; …
Run Code Online (Sandbox Code Playgroud)

iphone xcode ocunit ocmock ios

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

Cocoa Lumberjack:如何显示文件和行号?

我正试图为Cocoa Lumberjack找到一种向我展示文件和行号的方法.

在浏览了文档和一些谷歌搜索之后,我发现没有简单的方法可以做到这一点.

有没有办法这样做而不添加自定义格式化程序?

debugging macos objective-c ios lumberjack

7
推荐指数
2
解决办法
3198
查看次数

将[Int64]的Swift数组转换为NSArray

我想斯威夫特的数组转换Int64NSArrayNSNumber价值观.

@interface A : NSObject
- (void)bar:(NSArray *)tips;
@end
Run Code Online (Sandbox Code Playgroud)

Swift类继承了这个Objective-C类:

class B : A {
    func foo(tips : [Int64]) {
        self.bar(tips)
    }
}
Run Code Online (Sandbox Code Playgroud)

Swift代码无法编译时出现以下错误:

Type '[Int64]' does not conform to protocol 'AnyObject'
Run Code Online (Sandbox Code Playgroud)

我怎么能转换[Int64]NSArrayNSNumber实例?

PS我尝试了很多东西,找不到一个简单的方法来做到这一点:

self.bar(NSArray(array: tips))
self.bar(tips as NSArray)
Run Code Online (Sandbox Code Playgroud)

编辑:这个问题涉及不涉及试图建立新NSArray的独立的Int64对象,但现有的数组转换[Int64]NSArray

arrays interop objective-c ios swift

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

如何在较低级别的管理器类中获取协程作用域

我的一个库中有一个数据管理器类。到目前为止,它一直与执行者合作并拥有自己的执行者。现在该类正在转换为协程。

当管理器必须异步初始化数据时,就会出现问题,如下例所示。为了执行挂起函数,对的调用suspendedInit必须包含在launch. 这里的问题是管理器没有自己的协程作用域。

有一些我正在看但不喜欢的:

  1. 将协程作用域传递给DataManager构造函数并使用它。问题是用户DataManager尚不支持协程,因此没有自己的范围。
  2. DataManager实施CoroutineScope并创建自己的范围。正如文档所记录的那样,不鼓励这样做CoroutineScope

这个问题的推荐解决方案是什么?

    class DataManager {
        init {
            suspendedInit()
        }
        
        private suspend fun suspendedInit() = withContext(Dispatchers.IO) {
            /* some long asynchronous operations here */
        }
    }
Run Code Online (Sandbox Code Playgroud)

design-patterns coroutine kotlin kotlin-coroutines

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

用XIB替换故事板

如何用XIB替换故事板?

在尝试创建动态视图及其控制器时,我失去了新故事板的所有优点.现在,当我尝试将其从项目中删除时,我创建了一个带有自己的控制器的新XIB,并将其替换为项目设置:
在此输入图像描述
现在,在尝试运行应用程序时,它崩溃了,日志显示以下内容:

2012-04-08 14:50:16.567 Bazaart[11340:15203] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x8c15c20> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
Run Code Online (Sandbox Code Playgroud)

这是代码:UIRootWindow:

#import <UIKit/UIKit.h>
@interface UIRootWindow : UIViewController
@end
Run Code Online (Sandbox Code Playgroud)

及其相应的实施:

#import "UIRootWindow.h"
@implementation UIRootWindow

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    return self;
}
- (void)viewDidLoad {
    [super viewDidLoad];
}
- (void)viewDidUnload {
    [super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)

编辑:
我有菲利普建议的窗口(见下文).但是......我这样做的方式似乎不是最好的.我做得对吗?

UIRootWindow *wnd = …
Run Code Online (Sandbox Code Playgroud)

xcode interface-builder ios xcode4.3

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

使用PhotoKit(PHAsset)导出视频每次都会显示不同的视频文件

我使用该方法(这个问题的结尾)从设备中检索视频.它做了什么,它找到了库中的第一个视频,创建了导出会话并将视频导出到MOV文件中.

在两次运行应用程序(在方法运行之间停止应用程序)之后,将比较两个生成的文件.两个文件都不同.我期待两个文件都是相同的,因为正在导出相同的资产.

还有一点:在同一个应用程序运行中运行该方法两次,给出了两个相同的文件.

是否可以让PhotoKit在每次运行时导出相同的文件?

- (void)testVideoRetrievalSO {

    PHAsset *oneVideo = [[PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:nil] firstObject];

    PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
    options.networkAccessAllowed = YES;
    options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat;
    options.version = PHVideoRequestOptionsVersionOriginal;


    [[PHImageManager defaultManager] requestExportSessionForVideo:oneVideo
                                                          options:options
                                                     exportPreset:AVAssetExportPresetPassthrough
                                                    resultHandler:
     ^(AVAssetExportSession * _Nullable exportSession, NSDictionary * _Nullable info) {
         NSLog(@"Video test run on asset %@", oneVideo.localIdentifier);
         NSString *folderPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
         NSString *fileName = [[[NSUUID UUID] UUIDString] stringByAppendingPathExtension:@"mov"];
         NSString *tempFile = [folderPath stringByAppendingPathComponent:fileName];
         NSURL *tempFileUrl = [NSURL fileURLWithPath:tempFile];

         [exportSession setOutputFileType:AVFileTypeQuickTimeMovie];
         [exportSession setOutputURL:tempFileUrl];

         [exportSession exportAsynchronouslyWithCompletionHandler:^{ …
Run Code Online (Sandbox Code Playgroud)

video objective-c ios photokit

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

快速尝试问号

我在我维护的代码中看到以下内容:

func parse(values: NSMutableDicationary) {
    let data = try? JSONSerialization.data(withJSONObject: values, options: JSONSerialization.WritingOptions())
}
Run Code Online (Sandbox Code Playgroud)

注意该方法不会标记为抛出任何东西,也不会处理错误.代码确实使应用程序崩溃了.

我想弄清楚try?(尝试用问号)意味着什么.

谷歌搜索或StackOverflowing没有返回任何有用的信息.

那么,try?Swift的意思是什么?

syntax exception try-catch swift

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

带有泛型和 Void/Nothing 返回类型的 Kotlin 结果类型

我正在尝试使用 Kotlin 的[Result][1]类型。虽然在成功的情况下它不会返回任何值。我无法让它返回值。以下行给我带来了麻烦:complete(Result.success()). 它不编译。我尝试了两者Result<Void>Result<Nothing>但无法使其正常工作。

有关如何使其工作的任何建议?

package me.test.app

import android.util.Log

class Test {

    fun foo(complete: (Result<Nothing>) -> Unit) {
        if (Math.random() > 0.5) {
            complete(Result.success())
        } else {
            complete(Result.failure(Throwable("too low")))
        }
    }

    fun bar() {
        foo { result ->
            result.fold({
                Log.i("APP", "Success")
            })
            {
                Log.i("APP", "Failure")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

generics android kotlin

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

Kotlin 中构造函数参数的生命周期

我试图了解 Kotlin 中构造函数参数的生命周期。给定以下代码,FooFactory垃圾收集器何时可以收集类实例?

既然FooFactory延迟了使用,运行时会知道什么时候释放它吗?

或者如果编译器不知道何时发布FooFactory并且它将永远存在,这会造成泄漏吗?


class Foo {
    fun doStuff() {}
}

class FooFactory {
    fun getFoo() : Foo {
        return Foo()
    }
}

class User(factory: FooFactory) {
    val x: Foo by lazy {
        factory.getFoo()
    }
}

val user = User(FooFactory())

Thread.sleep(100)

user.x.doStuff()

Thread.sleep(100)
Run Code Online (Sandbox Code Playgroud)

lifecycle constructor garbage-collection kotlin

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