小编0xc*_*ced的帖子

如何在OS X或iOS中运行OS版本(不使用Gestalt)?

CarbonCore/OSUtils.h自OS X 10.8 Mountain Lion 起,位于的Gestalt()函数已被弃用.

我经常使用此函数在运行时测试OS X操作系统的版本(参见下面的玩具示例).

在Cocoa应用程序中,可以使用哪些其他API在运行时检查OS X操作系统版本?

int main() {
    SInt32 versMaj, versMin, versBugFix;
    Gestalt(gestaltSystemVersionMajor, &versMaj);
    Gestalt(gestaltSystemVersionMinor, &versMin);
    Gestalt(gestaltSystemVersionBugFix, &versBugFix);

    printf("OS X Version: %d.%d.%d\n", versMaj, versMin, versBugFix);
}
Run Code Online (Sandbox Code Playgroud)

macos cocoa macos-carbon ios

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

如何使用ConsoleLoggerProvider创建LoggerFactory?

ConsoleLoggerProvider有四个构造函数:

  1. ConsoleLoggerProvider(IConsoleLoggerSettings)
  2. ConsoleLoggerProvider(IOptionsMonitor<ConsoleLoggerOptions>)
  3. ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean)
  4. ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean, Boolean)

其中三个被宣布为过时的消息:

此方法已过时,将在以后的版本中删除.建议的替代方法是使用LoggerFactory配置筛选,使用ConsoleLoggerOptions配置日志记录选项.

使用构造函数#3,LoggerFactory使用a 创建一个ConsoleLoggerProvider很简单(如实体框架核心中记录的 - 日志记录):

var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => level >= LogLevel.Information, true) });
Run Code Online (Sandbox Code Playgroud)

但由于它已被弃用,我们留下了构造函数#2.这是我发现的等价物:

var configureNamedOptions = new ConfigureNamedOptions<ConsoleLoggerOptions>("", null);
var optionsFactory = new OptionsFactory<ConsoleLoggerOptions>(new []{ configureNamedOptions }, Enumerable.Empty<IPostConfigureOptions<ConsoleLoggerOptions>>());
var optionsMonitor = new OptionsMonitor<ConsoleLoggerOptions>(optionsFactory, Enumerable.Empty<IOptionsChangeTokenSource<ConsoleLoggerOptions>>(), new OptionsCache<ConsoleLoggerOptions>());
var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider(optionsMonitor) }, new LoggerFilterOptions { MinLevel = LogLevel.Information });
Run Code Online (Sandbox Code Playgroud)

这看起来过于复杂,我错过了一些简单的东西吗?

.net-core asp.net-core-2.2

28
推荐指数
2
解决办法
7833
查看次数

如何在具有不同配置名称的同一工作区中使用app和库编译项目?

我正在开发一个应用程序,我正在使用一个开源组件.

我有一个包含MyApp.xcodeprojComponent.xcodeproj的工作区.我的应用程序有三个配置:Debug,App StoreIn House,但该组件只有两个:DebugRelease

Debug配置中,一切正常,但我无法在App StoreIn House配置中编译我的应用程序,因为配置名称不匹配.尝试时,我收到文件未找到错误#import <Component/Component.h>

我需要App StoreIn House配置,我真的想避免修改组件的配置,以便于将来更新组件.

我知道我可以使用CocoaPods来解决这个问题,但我想知道Xcode中是否有一个简单的解决方案

xcode xcode-workspace

24
推荐指数
2
解决办法
6829
查看次数

UIImagePickerController从图书馆接收的视频缩略图

我正在尝试使用UIImagePickerController获取从库中拾取的视频的缩略图.

这是我的代码.如果我使用相机录制视频,我可以获得视频的缩略图.但是如果我从图书馆中获取视频,我就无法获得缩略图.谁知道为什么?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
    {
        NSURL *mediaUrl = [info objectForKey:UIImagePickerControllerMediaURL];

        MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaUrl];
        moviePlayer.shouldAutoplay = NO;
        UIImage *thumbnail = [[moviePlayer thumbnailImageAtTime:0.0 timeOption:MPMovieTimeOptionNearestKeyFrame] retain];
        [imageView setImage:thumbnail];  //imageView is a UIImageView

        [moviePlayer release];
        [thumbnail release];
        [self dismissModalViewControllerAnimated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

video thumbnails uiimagepickercontroller

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

XCTestExpectation:如何避免在等待上下文结束后调用fulfill方法?

我正在使用Xcode 6的新异步测试功能.当异步任务在超时之前结束时,一切正常.但是如果任务花费的时间比超时时间长,事情会变得更复杂.

以下是我正在进行的测试:

@interface AsyncTestCase : XCTestCase @end

@implementation AsyncTestCase

// The asynchronous task would obviously be more complex in a real world scenario.
- (void) startAsynchronousTaskWithDuration:(NSTimeInterval)duration completionHandler:(void (^)(id result, NSError *error))completionHandler
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        completionHandler([NSObject new], nil);
    });
}

- (void) test1TaskLongerThanTimeout
{
    XCTestExpectation *expectation = [self expectationWithDescription:@"Test 1: task longer than timeout"];
    [self startAsynchronousTaskWithDuration:4 completionHandler:^(id result, NSError *error) {
        XCTAssertNotNil(result);
        XCTAssertNil(error);
        [expectation fulfill];
    }];
    [self waitForExpectationsWithTimeout:2 handler:nil];
}

- (void) test2TaskShorterThanTimeout
{
    XCTestExpectation *expectation …
Run Code Online (Sandbox Code Playgroud)

xctest

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

设备旋转时的UIToolbar高度

来自iOS人机界面指南,iOS UI元素使用指南

在iPhone上,考虑设备旋转时工具栏高度的自动更改.特别是,请确保您的自定义工具栏图标非常适合横向显示的细条.不要以编程方式指定工具栏的高度.

我可以看到Mail,Twitter for iPhoneDropbox的高度从44点变为32点,但是当我添加工具栏(使用Interface Builder)并让我的UIViewController子类自动旋转(shouldAutorotateToInterfaceOrientation:返回YES)时,工具栏会不会在设备旋转时自动更改其高度.

UIToolbar类参考并没有提到高度的这种自动变化,所以我应该改变它编程,即使HIG说不要指定编程工具栏的高度

iphone uitoolbar ios

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

获取上次使用时排序的正在运行的应用程序列表

我想按照⌘+⇥时出现的相同顺序获取正在运行的应用程序列表

即如果我使用TextEdit,然后预览,那么iCal,顺序是

  1. iCal中
  2. 预习
  3. 文本编辑

使用 [[NSWorkspace sharedWorkspace] launchedApplications]不起作用,因为应用程序按启动日期/进程ID排序.枚举GetNextProcess不起作用,因为它也是由pid排序的.

注册通知和维护列表不是一个选项,因为我必须在应用程序启动后立即知道列表.那么,列表的第一个元素实际上就足够了,但我认为这几乎是同一个问题.

是否有一些API可用于获取此信息?

cocoa list process

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

+ [AVURLAsset isPlayableExtendedMIMEType:]在单元测试时表现不同

在我的应用程序调用[AVURLAsset isPlayableExtendedMIMEType:@"video/mp4; codecs=\"avc1.64001F, mp4a.40.2\""]返回YES,这是预期的.

如果我在单元测试中运行完全相同的代码,则返回NO.

应用程序和单元测试都在运行iOS 7.0的iPhone Retina(4英寸)模拟器上使用Xcode 5.0.2运行.

- (void) testPlayableExtendedMIMEType
{
    XCTAssertTrue([AVURLAsset class], @"");
    XCTAssertTrue([AVURLAsset isPlayableExtendedMIMEType:@"video/mp4; codecs=\"avc1.64001F, mp4a.40.2\""], @"");
}
Run Code Online (Sandbox Code Playgroud)

第一个断言通过,但第二个断言失败.

为什么在单元测试和应用程序中这种行为会有所不同?

unit-testing avfoundation ios

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

TypeBuilder中缺少CreateType.如何移植这个?

尝试将应用程序从.net 4.5移植到.net核心以供客户端使用.我注意到CreateType不再是TypeBuilder的一部分.我已经搜索了多个新的反射库而没有运气.有谁知道如何移植这个?

有问题的代码:

typeBuilder.CreateType()
Run Code Online (Sandbox Code Playgroud)

c# system.reflection .net-core-rc2

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

如何摆脱SIGTERM错误

我一直在新的xcode4上工作这个iPhone应用程序.实际上每次我在模拟器中退出我的应用程序时,我在main.m中的代码行上出现错误这是我的代码行,然后是下一行的错误

int retVal = UIApplicationMain(argc,argv,nil,nil);

线程1:编程接收信号:"SIGTERM".

这里发生了什么?我该如何解决?

iphone program-entry-point sigterm xcode4

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